Pytest是一个非常成熟的全功能的Python测试框架,支持测试用例自动检索自动、参数化、跳过、标记预期等功能,且可以插件功能丰富多样,与Python自带的unittest测试框架类似,但是比unittest框架使用 起来更简洁,功能更强大!
pytest特点
1.简单灵活,容易上手,文档丰富,不像unittest用例编写规则那样麻烦,如导入unittest,继承unittest.TestCase等
2.支持参数化,@pytest.mark.parametrize
3.支持用例分类,可以细粒度地控制要测试的测试用例;@pytest.mark.标签名
4.用例的前置和后置更加灵活,pytest.fixture()
5.断言简单,只有一个assert
6.能够支持简单的单元测试和复杂的功能测试。
7.支持设置用例执行顺序pytest-ordering
8.支持用例跳过,失败重跑机制。pytest-rerunfailures,flaky,tenacity
9.丰富的插件以及社区支持,具有很多第三方插件,并且可以自定义扩展。
10.支持运行由nose, unittest编写的测试case。
11.支持分布式、多线程跑用例pytest-xdist
12.支持pytest-html报告、allure报告
13.可以很好的和CI工具结合。
pytest搜索识别用例规则:
1.pytest 默认会去查找当前项目下所有的以 test 打头的 py 文件test.py 的文件,符合命名规则test.py 的文件
2.以 test 开头的函数名
3.以Test 开头的测试类(没有 init 函数)当中,以 test_ 开头的函数
pytest用例执行顺序:
1.文件名称 按 ASCII 码排序
2.文件内部按代码先后顺序排序
pytest的执行方式
1.执行目录下所有用例
pytest/py.test
2.执行某个python模块
pytest 文件名.py
3.执行某个模块的某个类
pytest 文件名.py::类名
- 执行某个模块里面某个类中的某个方法
pytest 文件名.py::类名::方法名
- 跳过运行某个用例
pytest -k “类名 and not 方法名”
- 执行特定标记的用例
pytest -m [标记名]