本文最后更新于:2024年5月7日 下午
pytest是一个非常成熟的全功能的Python测试框架 。文本记录该框架的使用方法。
简介
- pytest是一个非常成熟的全功能的Python测试框架,主要有以下几个特点:
- 简单灵活,容易上手
- 支持参数化
- 能够支持简单的单元测试和复杂的功能测试,还可以用来做selenium/appnium等自动化测试、接口自动化测试(pytest+requests)
- pytest具有很多第三方插件,并且可以自定义扩展,比较好用的如pytest-selenium(集成selenium)、pytest-html(完美html测试报告生成)、pytest-rerunfailures(失败case重复执行)、pytest-xdist(多CPU分发)等
- 测试用例的skip和xfail处理
- 可以很好的和jenkins集成
- report框架----allure 也支持了pytest
- 官方文档: https://docs.pytest.org/en/latest/contents.html
pytest 规范
-
pytest 在自动测试时需要遵循一定规则,这些规则可以修改,默认情况为:
-
所有的单测文件名都需要满足
test_*.py
格式或*_test.py
格式。 -
在单测文件中,测试类以
Test
开头,并且不能带有__init__
方法注意:定义class时,需要以大写T开头
-
在单测类中,可以包含一个或多个
test_
开头的函数。 -
在执行pytest命令时,会自动从当前目录及子目录中寻找符合上述约束的测试函数来执行。
-
安装
- 默认情况下 python 自带 pytest 框架,可以通过命令进行升级安装
1 |
|
- 验证安装
1 |
|
输出 pytest 版本表明安装成功
1 |
|
运行方式
测试类主函数模式
- 可以在 python 中执行 pytest 命令
- 引入 pytest 包,在python 中执行代码
1 |
|
命令行模式
- 直接执行命令
pytest 文件路径/测试文件名
1 |
|
- console中的指令
指令含义 | 指令 |
---|---|
用于详细显示日志信息 | -v |
测试结果的简单统计 | -rA |
只显示整体测试结果 | -q |
帮助 | -h |
显示print打印信息 | -s |
输出html格式报告 | –html=path输出路径 |
生成log报告 | –resultlog=./log.txt (6.1 版本之后被删除) |
生成xml报告 | –junitxml=./log.xml |
当错误达到num时,停止测试 | –maxfail=num |
只运行有MARKEXPR(自定义)标记的测试 | -m MARKEXPR |
生成简略的指定需求的报告 | -r option |
函数数据参数化
- 方便测试函数对参数的调用:
1 |
|
pytest 会将定义好的参数列表逐个填入到参数位置中执行代码,有多少个执行多少遍
- 参数传递
1 |
|
多进程运行cases
-
当cases量很多时,运行时间也会变的很长,如果想缩短脚本运行的时长,就可以用多进程来运行。
-
安装pytest-xdist:
1 |
|
- 运行方法
1 |
|
其中NUM填写并发的进程数。
参考资料
- https://zhuanlan.zhihu.com/p/356599211
- https://blog.csdn.net/IT_LanTian/article/details/121356143
- https://blog.csdn.net/weixin_42724501/article/details/116562575
文章链接:
https://www.zywvvd.com/notes/coding/python/python-pytest/python-pytest/
“觉得不错的话,给点打赏吧 ୧(๑•̀⌄•́๑)૭”
微信支付
支付宝支付
Python 测试框架 pytest —— 使用教程
https://www.zywvvd.com/notes/coding/python/python-pytest/python-pytest/