python测试框架-pytest (3)

在测试方法上加上装饰器:@pytest.mark.run(order=2)

pip install pytest-dependency:控制用例的依赖关系 ps:设计测试用例的时候进可能不要让用例有顺序,不要让测试用例有依赖关系,如果无法做到,可以临时的用插件解决

:

设置一个用例和一个用例的依赖关系:一旦用例A失败,那么用例B也不会执行。比如:用例A为添加购物车,用例B为去结算,那么如果用例A没有登录就会执行失败,则用例B也就会执行失败
pytest-dependency 要做的就是,让他们之间存在一种依赖关系:一旦用例A失败,那么用例B也不会执行 SKIP

import pytest # 官方demo: @pytest.mark.dependency() # test_a测试用例设置了dependency依赖关系 @pytest.mark.xfail(reason="deliberate fail") def test_a(): assert False @pytest.mark.dependency() # test_b测试用例设置了dependency依赖关系 def test_b(): pass @pytest.mark.dependency(depends=["test_a"]) # test_c 依赖于测试用例 test_a。 因为test_a断言失败,所以test_c会跳过 def test_c(): pass @pytest.mark.dependency(depends=["test_a"]) # test_d 依赖于测试用 test_b def test_d(): pass @pytest.mark.dependency(depends=["test_b", "test_c"]) test_e依赖与测试用例 test_b 和 test_c 因为test_b通过了,但test_c跳过,所以test_e也会跳过 def test_e(): pass

pip install pytest-xdist:分布式并发执行测试用例

机制:哪个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 生成测试报告 另起...

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/zzsdzz.html