Pytest UI自动化测试实战实例详解
环境准备
序号 | 库/插件/工具 | 安装命令 |
1 | 确保您已经安装了python3.x | |
2 | 配置python3+pycharm+selenium2开发环境 | |
3 | 安装pytest库 | pip install pytest |
4 | 安装pytest -html 报告插件 | pip install pytest-html |
5 | 安装pypiwin32库(用来模拟按键) | pip install pypiwin32 |
6 | 安装openpyxl解析excel文件库 | pip install openpyxl |
7 | 安装yagmail发送报告库 | pip install yagmail |
8 | 确保已配置火狐或谷歌浏览器及对应驱动 | |
9 | 确保已经正确配置好发送邮件的邮箱 |
项目简介
测试地址
测试范围
1.126电子邮箱登录功能测试-验证正确帐号密码登录成功-验证错误用户名密码登录失败(有很多情况,用例里面做了充分的校验)
2.126电子邮箱添加联系人功能测试-验证正确填写必填项数据添加联系人成功-验证缺省必填项数据添加联系人失败-验证必填项字段数据格式错误添加联系人失败
3.126电子邮箱发送邮件功能测试-验证普通邮件发送成功-验证带附件邮件发送成功
项目设计
1.python编程语言设计测试脚本
2.webdriver驱动浏览器并操作页面元素
3.二次封装webdriver Api 操作方法
4.采用PageObject设计模式,设计测试业务流程
5.通过UI对象库存储页面操作元素
6.通过数据文件存储数据,读取数据,参数化测试用例并驱动测试执行
7.通过第三方插件pytest-html生成测试报告
8.通过yagmail第三方库,编写发送报告接口,测试工作完成后自动发送测试报告
代码分析
目录结构
目录结构
代码实现
通过126邮箱测试范围分析,我们需要通过设计剪切板,模拟键盘完成附件上传操作,因此我们首先来编写这两个方法
clipboard.py-操作剪切板
keyboard.py-模拟键盘
通过测试项目设计,我们需要把测试数据存放在Excel文件中,把页面操作元素存在UI对象库中也就是一个配置文件,那么我们需要对Excel 和 ini文件解析,因此我们开始编写这两个方法,设计UI对象库和测试数据文件
parseExcelFile.py-解析Excel文件
parseConFile.py-解析配置文件
config.ini
新建excel文件,分3个sheet,分别为:login,contact,mail #每个sheet中数据可自行填写,驱动测试用例执行不同的数据进行测试
login
contact
数据,UI对象库,解析方法都已经有了,接下来通过PageObject模式设计编写每个页面的操作及封装126邮箱的功能,以便后续设计用例调用
BasePage.py-webdriver二次封装
HomePage.py-邮箱首页选择菜单
LoginPage.py-封装登录功能
ContactPage.py-封装添加联系人功能
SendMailPage.py-封装发送邮件功能
所有的准备工作都已经做好了,还有一个问题,我们的添加联系人和发送邮件应该是否应该在已经登录的前提下测试呢?答案是肯定的。所以我们在用例同目录下新建conftest.py文件并调用登录功能(为什么这么做,
conftest.py-同用例目录下,调用登录功能
ok,开始编写测试用例啦
test_loginCase.py-登录功能测试
test_contactCase.py-添加联系人功能测试
test_sendMailCase.py-发送邮件功能测试
问题
用例已经写完了,有两个问题
1.有没有发现我们的报告怎么生成的?也没有失败用例截图?
2.我们貌似并没有编写驱动浏览器的代码?
现在我们来解决这个两个问题
根据pytest的conftest.py文件的原理,我们可以把驱动浏览器的代码写在一个全局的conftest.py文件里面。报告生成其实是通过命令 pytest --html=‘report.html’ --self-contained-html生成的,但是这样的报告对用例的描述不是很清晰,且没有对失败用例截图,也不方便我们分析项目的缺陷,我们也可以填写代码放到这个文件里面
conftest.py-全局conftest.py文件
最后呢,为了减小项目维护成本,我们把一些全局的配置项,放到我们的功能配置文件中共全局使用,包括运行用例的一些命令字符串,可以自行修改
conf.py-全局配置文件
运行项目
通过命令运行
1.cmd切换到项目的根目录,执行pytest --html=‘report.html’ --self-contained-html命令(此运行方式,无法发送测试报告邮件)
这种方式感觉有点low,我们换另外一种方式,可以通过os模块自动执行相关命令,编写运行用例代码
RunTestCase.py-执行用例文件
我们可以直接执行这个文件执行所用的测试用例了!
其实我们运行用例往往不只是 使用pytest --html=‘report.html’ --self-contained-html 这样一个简单的命令运行,通常会添加很多的命令选项,比如-v,-q,-s等等,那么怎么办呢?这时候就用到了pytest.ini配置文件了
只添加了几个简单的命令选项
pytest.ini-pytest配置文件
测试输出
1.自动生成html格式报告,其中报告里面附带用例执行日志明细,及用例失败自动截图(部分报告展示)
2.自动发送测试邮件给指定用户
总结
感谢每一个认真阅读我文章的人!!!
如果下面这些资料用得到的话可以直接拿走:
1、自学开发或者测试必备的完整项目源码与环境
2、测试工作中所有模板(测试计划、测试用例、测试报告等)
3、软件测试经典面试题
4、Python/Java自动化测试实战.pdf
5、Jmeter/postman接口测试全套视频获取
6、Python学习路线图
重点:配套学习资料和视频教学
那么在这里我也精心准备了上述大纲的详细资料
包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。如下,需要的点击下方链接加入群聊免费领取