pytest的conftest注意事项以及常用插件
"""
1. conftest中定义的函数或者fixture不能以test开头,要和测试用例区别开来
2. 通过@pytest.fixture()声明一个函数是一个fixture
3. conftest.py 是特殊的模块,无法import
4. 可以用setup-show 回溯setup的运行过程
"""
查看fixture是怎么执行的
不会执行代码,只把setup的执行顺序展示出来
def test_func01():
print("前置操作:准备数据")
yield
print("后置操作:清理数据")
def test_func02():
print("执行的setUp02")
yield
if __name__ == '__main__':
pytest.main(["-vs", "--setup-show"])
不执行用例,查看一共会有多少用例执行
if __name__ == '__main__':
pytest.main(["-vs", "--collect-only"])
测试函数错误了,fixture的后置方法还会再执行吗
无论语法错误,还是断言错误,fixture的teardown方法都会执行
pytest插件
repeat
# 插件的使用一般有装饰器用法、命令行用法(装了插件才有参数的)
# pytest-repeat 重复,任务开发中的info接口可以使用这个,失败的时候,重复执行以下
import pytest
@pytest.mark.repeat(2) # 指定test_func01用例运2次
def test_func01():
pas
pytest-ordering
"""
`pip install pytest-ordering`
控制修改默认顺序,在一个py文件里面,顺序默认是从上到下的
多个测试文件之间是ASCII顺序
"""
@pytest.mark.run(order=2)
def test_func01():
pass
@pytest.mark.run(order=1)
def test_func02(): # 正常应该是test_func01先执行,通过order执行运行顺序,常用于多个py文件中用例的执行,pytest中用例的执行顺序默认是按ascii来执行的
pass
test_001.py::test_func02 PASSED # 可以看到是func02先执行的 [ 50%]
test_001.py::test_func01 PASSED
搜索插件用法帮助
pytest --help |findstr rerun
pytest-rerunfailures 重跑失败的用例
成功后,就不重跑
失败才重跑,只到指定的最大次数
pytest-dependency用例依赖