在测试方法上加上装饰器:@pytest.mark.run(order=2)
pip install pytest-dependency:控制用例的依赖关系 ps:设计测试用例的时候进可能不要让用例有顺序,不要让测试用例有依赖关系,如果无法做到,可以临时的用插件解决
:
设置一个用例和一个用例的依赖关系:一旦用例A失败,那么用例B也不会执行。比如:用例A为添加购物车,用例B为去结算,那么如果用例A没有登录就会执行失败,则用例B也就会执行失败
pytest-dependency 要做的就是,让他们之间存在一种依赖关系:一旦用例A失败,那么用例B也不会执行 SKIP
机制:哪个cpu先执行完一个任务,就下发另一个任务
pytest -n 3 :3=当前系统的cpu个数,如果不知系统有多少个cpu或者不知道可以承载多少个进程,使用 pytest -n aotu 自动分发空闲的进程
pip install pytest-rerunfailures:失败重跑pytest --reruns 5 : 如果用例失败,就会重新跑5次
pytest --reruns 5 --reruns-delay 2:用例失败后等待2秒后再执行,或者再用例方法上加上装饰器@pytest.mark.flaky(5, reruns-delay=2)
pip install pytest-assume:多重校验通常一个测试方法中会写多个断言,如果第一条断言过不去,下面的就不执行了,如果我们想报错也往下执行,使用pytest提供的断言方法方法
pytest.assume(14) 相当于 assert 14 # 此方法应用场景较少
pip install pytest-random-order:用例随机执行pytest --random-order-seed= 设置一个种子,使用比较少
pip install pytest-html:测试报告后续使用allure,不做介绍
三、pytest高级用法 hook函数 pytest插件加载方式
内置plugin
从代码内部的 _pytest 目录加载
External Libraries - site-package - _pytest - hookspec.py
hookspec.py 有很多方法 即我们所说的hook方法,我们可以改写hook方法来满足我们一些需求
外部插件(第三方插件)
通过setuptools entry points 机制发现的第三方插件(https://docs.pytest.org/en/latest/plugins.html)
conftest.py 存放的本地插件(重点):
自动模块发现机制
pytest --trace-config 查看当前pytest中所有的plugin(带有hook方法的文件)
Allure 生成测试报告 另起...