自动化框架——pytest
pytest的用处和学习目的:
简单灵活,容易上手
支持参数化
能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
测试用例的skip和xfail处理
可以很好的和jenkins集成
report框架----allure 也支持了pytest
环境搭建:
2:命名规范:
所有的单测文件名都需要满足test_*.py格式或*_test.py格式。
在单测文件中,测试类以Test开头,并且不能带有 init 方法(注意:定义class时,需要以T开头,不然pytest是不会去运行该class的)
在单测类中,可以包含一个或多个test_开头的函数。
此时,在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。
3:pytest的运行方式,断言:
1)通过pycharm的右键运行
2):通过命令行方式运行
右键open in 选择终端的方式来输入命令行执行
3):通过main函数运行
pytest的断言:
pytest的运行清单:
pytest的测试固件:(setup teardown)
1.setup和teardown主要分为:模块级,类级,功能级,函数级。
2.存在于测试类内部
代码示例:
- 函数级别setup()/teardown()
- 2.2.类级别
pytest的执行顺序,跳过:
1)执行顺序
2)不执行,跳过,或者满足条件跳过
@pytest.mark.xfail
除了上面学习的pytest.xfail(),xfai还有一种使用方法。就是@pytest.mark.xfail标签,他的含义是期望测试用例是失败的,但是不会影响测试用例的的执行。如果测试用例执行失败的则结果是xfail(不会额外显示出错误信息);如果测试用例执行成功的则结果是xpass。
吃个荔枝:我们直接在测试用例上加上@pytest.mark.xfail标签。
pytest的mark标签
mark标签和skipif标签用来标记用例,作用于冒烟测试,不需要执行全部用例时来标记执行。
mark标签的注意事项,以及ini配置文件
文件名固定为pytest.ini,一般和测试驱动层放在一起,即根目录
pytest的参数化和测试套件,fixture
参数化可以结合文件读写的方法,使用csv或txt文件进行传参。
fixture是为了两个方法之间的传参
如果返回值不止一个,可以使用列表或字典进行返回,再到第二个方法进行列表或字典的读取。
涉及多个用例都需要参数化,可以将参数函数放置在conftest.py文件中,同理也是在根目录
至此。pytest的两个重要配置文件pytet.ini和conftest.py就讲完了!是重点内容要切记
pytest的三方插件:失败停止,失败重跑,多线程分布式
pytes的测试报告和allure生成的测试报告
由于pytest自带的报告比较简陋,可以使用钩子函数进行添加信息,如:测试报告人,测试时间,抓取错误截图等。实例如下:
以下是allure生成的测试报告和代码,详细的allure学习另开一个博客
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)