当前位置: 首页 > news >正文

基于Selenium+Python的web自动化测试框架 - 教程

基于Selenium+Python的web自动化测试框架 - 教程

点击文末小卡片,免费获取软件测试全套资料,资料在手,涨薪更快

一、什么是Selenium?

一个基于浏览器的自动化测试工具,它提供了一种跨平台、跨浏览器的端到端的web自动化解决方案。Selenium核心包括三部分:Selenium IDE、Selenium WebDriver 和Selenium Grid。就是Selenium

1.Selenium IDE:Firefox的一个扩展,它许可进行录制回放,并把录制的操作以多种语言(例如java、python等)的形式导出成测试用例。

2.Selenium WebDriver:提供Web自动化所需的API,主要用作浏览器控制、页面元素选择和调试。不同的浏览器需要不同的WebDriver。

3.Selenium Grid:提供了在不同机器的不同浏览器上运行selenium测试的能力。

本文将详细介绍如何运用Python结合Selenium WebDriver库搭建web自动化测试框架。

二、自动化测试框架

一个典型的自动化测试框架一般包括用例管理模块、自动化执行控制器、报表生成模块和log模块,这些模块相辅相成。

接下来介绍各模块的逻辑单元:

1、用例管理模块

用例管理模块包括新增、修改、删除等运行单元,这些单元又会涉及到用例书写模式,测试数据库的管理、可复用库等。

2、自动化控制器

控制器是自动化用例执行的组织模块,首要是负责以什么手段执行大家的测试用例.

3、报表生成模块

用例执行情况。另外还可以配置发送邮件特性。就是主导负责执行用例后的生成报告,一般以HTML格式居多,信息首要

4、log模块

主要用来记录用例执行情况,以便于高效的调查用例失败信息以及追踪用例执行情况。

三、自动化框架的设计和搭建

1、需求分析

首先我们的测试对象是一个web平台,基于此平台设计的框架要包括测试用例管理、测试执行控制器、测试报告以及测试日志的生成。

2、设计和实现

页面管理

假设测试web对象为一个典型单页面应用,所以我们采用页面模式。页面模式是页面与测试用例之间的纽带,它将每个页面抽象成一个单独的类,为测试用例提供页面元素的定位和操作。

BaseClass作为父类只包含driver成员变量,用来标识Selenium中的WebDriver,以便在子类中定位页面元素。LoginClass和PageClass作为子类,可以提供页面元素的定位和操作方法。比如登录页面。

从页面看,必须操作的元素分别为:登录用户名、密码、下次自动登录和登录按钮。具体实现代码如下:

页面父类BaseClass.py

LoginClass继承自BaseClass,并进行登录的元素定位以及管理实现。代码中定位了username和password,并添加了设置用户名和密码的操作。

公共库模块

公共库模块是为创建测试用例服务的,主要包括常量、公共函数、日志、报告等。

Common.py

测试用例信息类用来标识测试用例,并且包括执行用例、执行结果信息,主要包括以下字段。

日志主要用来记录测试用例执行步骤及产生的错误信息,不同的信息有不同的日志级别,比如Information、Warning、Critical和Debug。由于每个测试用例产生的日志条目比较少,所以在测试框架中只利用了最高级别的日志打印,即Debug级别,该级别也会将其他所有的日志级别的信息同样打印出来。在具体的实现中引用了Python标准库中的logging类库,以便更方便的控制日志输出。

测试用例仓库

用例仓库主要用来组织自动化测试用例。每条测试用例都被抽象成一个独立的类,并且均继承自unittest.TestCase类。 Python中的unittest库提供了丰富的测试框架支持,包括测试用例的setUp和tearDown方法,在实现用例的过程中可以重写。依托页面管理和公共库模块实现的页面手段和公共函数,每一个测试用例脚本的书写都会非常清晰简洁。

从这个测试用例中,我们允许看到

1.Setup中定义了执行测试用例前的一些实例化工作
2.tearDown对执行完测试做了清理和写日志文件工作
3.测试步骤、测试数据和测试检查点极其清晰,易修改(比如用户名密码)
4.日志级别仅有Debug,所以写日志仅需用同一Log途径

3、用例执行模块

执行模块核心用来控制测试用例脚本的批量执行,形成一个测试集。用例的执行引用了Python标准库中的subprocess来执行nosetests的shell命令,从而执行给定测试用例集中的用例。测试用例集是一个简单的纯文本文件,建立过程中利用了.txt材料testcases.txt。

用例前没有“#“标记的测试用例脚本会被执行,而有”#“标记的则会被忽略,这样可以很方便的控制测试集的执行,当然也允许创建不同的文档来执行不同的测试集。

四、应该改进的模块

对于现有实现的测试框架,已经可以满足web对象的自动化需求,但还是有些可以改进提高的地方,比如:

1.部分用例可以尝试数据驱动。
2.二次封装selenium的By函数,以便更高效定位元素。
3.没有进行持续化集成。

五、总结

通过基于Selenium实现的web自动化测试框架不仅轻量级而且灵活,能够快速地开发自动化测试用例,结合本篇的框架设计和一些好的实践,希望对大家以后的web自动化框架的设计和实现有所援助。

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,该仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技能功底。

http://www.rkmt.cn/news/127472.html

相关文章:

  • 未来之窗昭和仙君(五十六)页面_预览模式——东方仙盟筑基期
  • 鸽子蛋和ANcHuN蛋
  • 爬山算法:无需微积分的机器学习之旅
  • 软件安装与卸载测试标准化流程指南
  • 震惊!选错云服务器代理商,你的业务将面临巨大风险!
  • 【花雕学编程】Arduino BLDC 之三轴正弦波协调运动控制
  • GA-RF遗传算法优化随机森林回归+SHAP分析+优化前后对比+新数据预测,MATLAB代码
  • 深入解析:光刻胶用聚酰亚胺(PSPI)
  • CTF比赛必备常用工具(附下载方式)_ctf工具
  • 儿童生长曲线分析技术深度解析:原理、实现与预警机制
  • 保姆级教程:大模型学习指南(零基础入门到项目实战),建议收藏_AI大模型神仙级入门教程(非常详细)
  • 状态,是业务系统复杂度的源头
  • 备赛四--
  • 数据库测试数据的构造策略与全生命周期管理
  • 别再乱刷教程了!这份结构化大模型学习路线,帮你高效进阶
  • 揭秘JavaScript闭包,继承,正则表达式
  • git命令速查表
  • 汇川AC712高速脉冲输入
  • 详细介绍:类 Excel 工具选型指南:SpreadJS 纯前端方案引领企业数据处理新范式
  • CTF进阶解题,掌握这套框架+技巧就够了!
  • 38大龄Java程序员的求职困局:中年失业
  • 前端把token加到请求头,零基础入门到精通,收藏这篇就够了
  • 深入解析:java锁:从 Mark Word 锁升级到 AQS
  • MATLAB实现基于多层感知机(MLP)进行锂电池剩余寿命(RUL)预测
  • 学习机与线下补课如何选择?2025年不同学段搭配思路分析 - 品牌测评鉴赏家
  • 完整教程:图解HTTP、HTTP知识大全
  • 第一节、判断网站是否符合谷歌SEO的标准
  • AI 学习机真的能提分吗?这 5 大品牌用实测数据告诉你答案 - 品牌测评鉴赏家
  • 谷歌5篇Agent白皮书深度剖析:AI智能体全链路技术详解,助力开发者领先行业
  • Python+Vue的高校社团管理系统的设计与实现 Pycharm django flask