pytest使用教程
文档
https://docs.pytest.org/en/latest/
安装
pip install pytest
pip install -U pytest
pytest --version
pytest --help
测试用例识别与运行
- 测试文件
- test_*.py
- *_test.py
- 用例识别
- Test类包含的所有test_的方法,测试类不能带有__init__方法
- 不在类中的所有test_*方法
- pytest可以执行unittest框架写的用例和方法
- 运行
- 命令行执行pytest
- 命令行执行pytest -v 展示运行详细信息
- 代码中pytest.main(['test_a.py']),使用python解释器运行或python test_a.py
- pytest.main(['test_a.py::TestDemo', '-v'])
- 用例顺序从上往下顺序执行
命令参数
- -k 运行选中用例,后面跟表达式匹配测试用例名称
- -v 输出展示详细信息
- --setup-show 展示运行过程
插件
运行级别

参数化
@pytest.mark.parametrize('a,b', [ (1,2), (10,20)])
可利用参数生成多条测试用例
- 第一个参数标识参数化的名字
- 第二个参数标识参数化的值
- ids修改参数化用例名称
异常捕获
- Python try:except 放放
- pytest
with pytest.raises(ErrorName):
#业务代码
fixture
@pytest.fixture
- 在测试函数运行前后运行,方便做测试前的准备工作。
- 通过函数中传入名字调用或使用装饰器
@pytest.mark.usefixtures(''),装饰器调用无法获取返回值 - 可以使用多个fixture
- 使用autouse自动应用,默认为False
- 作用域scope:
- session 所有
- module 模块级别
- class 类
- function 方法
- package 包级别。
- yield 激活用例后执行部分teardown
conftest.py
- 命名不可变
- 使用无需导入
- 需要__init__.py文件
- conftest.py与被测用例放在同一路径下。可以放在不同目录,作用域不同,就近原则。
常用插件
- pytest-ordering 控制用例执行顺序
- pytest-dependency 控制用例的依赖关系
- pytest-xdist 分布式并发执行测试用例
- pytest-rerunfailures 失败重跑
- pytest-assume 多重校验
- pytest-random-order 用例随访执行
- pytest-html 测试报告
hooks
- 在sitepackages文件夹下_pytest下有hoospec.py文件中又预先定义好的hooks函数
- 可在conftest.py中改写

浙公网安备 33010602011771号