【自动化测试】基于Selenium + Python的web自动化框架

一、什么是?

该工具是呈基于浏览器的自动化性质的, 她所供应的是一种跨越平台、跨越浏览器的, 从一端到另一端的 web 自动化解决方面的方案。其主要涵盖三部分, 分别为: IDE, 还有 Grid:

这儿有个扩展, 它属于IDE, 它具备录制回放功能, 它还可以将录制的操作, 以多种语言比如java等的形式, 导出成为测试用例。

其二, 提供用于Web自动化的API, 其主要作用在于浏览器控制, 在于页面元素选择, 还在于调试。不同的浏览器所需的是不同的。

3、Grid, 它具备一种能力, 这种能力是在不同机器之上, 运行测试, 而且是在不同浏览器上进行运行测试的能力。

本文使用结合 库进行自动化测试框架的搭建。

二、自动化测试框架

典型的一个自动化测试框架, 通常涵盖用例管理模块, 并有自动化执行控制器, 还包含报表生成模块以及 log 模块, 这些模块相互辅助、补充。

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

1、用例管理模块

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

2、自动化控制器

复制代码
   控制器是自动化用例执行的组织模块,主要是负责以什么方法执行我们的测试用例

3、报表生成模块

复制代码
   主要负责执行用例后的生成报告,一般以HTML格式居多,信息主要是用例执行情况。另外还可以配置发送邮件功能。

4、log模块

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

三、自动化框架的设计和实现

1、需求分析

首先, 我们测试的对象是是一个 web 平台, 以这个平台为基础来设计的框架, 要涵盖测试用例管理这一方面, 要囊括测试执行控制器这一方面, 要包含测试报告这一方面, 还要有测试日志的生成这一方面。

2、设计和实现

复制代码
   1)页面管理

假定测试 web 对象属于一个典型的单页面应用, 故而我们选用页面模式, 页面模式。

是那页面跟测试用例之间起连接作用的纽带, 它把每个页面进行抽象, 使其成为一个单独的类, 为测试用例供给页面元素的定位以及操作。

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

从页面进行查看, 所要操作的元素分别是, 登录时使用的用户名, 登录时使用的密码,下次登录能够自动进行登录的设置, 以及用于触发登录动作的按钮。具体实现代码如下:

页面父类.py

传承而来的, 是针对登录所展开的元素定位以及操作的达成。在代码里, 对相关元素做了定位, 还增添了设置用户名还有密码的操作行为。

复制代码
2)公共库模块

创建测试用例所服务的模块为公共库模块, 其主要涵盖了常量, 还有公共函数, 以及日志, 再者是报告等。

.py

测试用例会被测试用例信息类予以标明, 而且其中涵盖执行用例, 还有执行结果里面的信息, 主要是包含以下这些字段。

测试用例所执行的步骤以及所产生的错误信息, 主要会被记录在日志当中, 不同的那些信息, 有着不一样的日志级别, 举例来说, 存在, , 跟Debug。鉴于每个测试用例产出的日志条目数量比较少, 因此于测试框架里, 仅仅运用了最高级别的日志打印, 也就是Debug级别, 此级别同样会把其他所有日志级别的信息给打印出来。在具体的实现过程中, 引用了标准库之内的类库, 目的是能够更为便捷地控制日志输出。

复制代码
   3)测试用例仓库

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

从这个测试用例中,我们可以看到

Setup中定义了执行测试用例前的一些实例化工作

对执行完测试做了清理和写日志文件工作

测试步骤明确, 测试数据清楚, 测试检查点明晰, 易于修改, 像用户名密码这类内容便是如此。

日志级别仅有Debug,所以写日志仅需用同一Log方法

3)用例执行模块

执行模块主要用于控制测试用例脚本大批量依次执行事宜, 进而形成一个测试集合。用例的执行在此过程中引用了标准库当中的用于执行的shell命令, 借此得以执行给定具体测试用例汇聚集合里边的用例。测试用例集合是一个构造简易的单纯文本格式文件, 在实现整个过程期间运用利用了.txt文件.txt。

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

四、需要改进的模块

就现正实现着的测试框架而言, 已然能够达成 Web 对象的自动化需求, 然而, 依旧存在着一些能够予以改进提升的方面, 诸如:

1)部分用例可以尝试数据驱动

2)二次封装的By函数,以便更高效定位元素

3)没有进行持续化集成

五、总结

由实现产生的 web 自动化框架, 不但具备轻量级的特性, 而且拥有灵活性, 能够促使自动化测试用例得以快速开发, 将本篇的框架设计与部分优良实践予以结合, 有望为大家后续有关 web 自动化框架的设计以及实现带来助力。

最终感激每一位仔细阅读我所撰写文章之人, 礼尚往来向来是需存在的, 虽说并非是极具价值之物, 要是你能够用得上的话可以径直拿去:

对那些从事【软件测试】工作的朋友而言, 这些资料被当成最全面且最完整的备用仓库, 这个仓库陪伴了上万个测试工程师走过最为艰难的那段路程, 期望它也能够对你有所帮助!

相关推荐
2601_9669496517 分钟前
股票池发生变化后,如何高效更新行情数据?从全量刷新到增量同步
开发语言·python·数据分析·pandas·量化交易·股票数据·quantdash
玖石书42 分钟前
python-uv-windows环境安装方案
windows·python·uv
happylifetree1 小时前
Python06-08:Python开发工具PyCharm安装
python·pycharm
liuchangng1 小时前
类Jev项目Kev从入门到实战(1):Kev 是什么——不开权重也能自训的决策模型
人工智能·python·jev·kev·决策模型
leihefeng1 小时前
PX06-对比两个 Excel 文件的差异:从逐单元格到生产级实现
python·excel
Ticnix2 小时前
MCP 上个月把自己推翻重写了:Session 没了、Sampling 废了——你学的教程还停在 2025
python·agent·全栈
“AI国潮设计-小江”2 小时前
[AIGC实战] 基于Stable Diffusion的潮汕非遗IP自动化生成工作流(附Python批量处理脚本)
开发语言·人工智能·python·prompt·aigc
LOVE️YOU2 小时前
Python 中的 range 是类还是函数?range 对象该怎么理解?
python
VidDown2 小时前
从视频画面里提取文字:OCR、文字检测与结构化输出
python·网络协议·ocr·音视频·视频编解码·视频
言乐62 小时前
Python实现ai进化
python·django·virtualenv·pygame·tornado