pytest的conftest注意事项以及常用插件

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用例依赖

pip install pytest-dependency

主要用于解决用例之间的依赖关系,如果依赖的上下文失败,后续的用例会被标识为跳过执行

posted @ 2022-12-31 23:44  无敌大牛牛  阅读(128)  评论(0编辑  收藏  举报