pytest 执行顺序控制
对于集成测试,经常会有上下文依赖关系的测试用例。
比如 10 个步骤,拆成 10 条 case,这时候能知道到底执行到哪步报错。
用例默认执行顺序:自上而下执行
可以通过 setup,teardown 和 fixture 来解决。也可以使用对应的插件。
安装:pip install pytest-ordering
用法:@pytest.mark.run(order=2)
,也可以用@pytest.mark.first
和@pytest.mark.second
注意:多个插件装饰器(>2)的时候,有可能会发生冲突、
Pytest 并行与分布式执行
场景 1:
测试用例 1000 条,一个用例执行 1 分钟,一个测试人员执行需要 1000 分钟。
通常我们会用人力成本换取时间成本,加几个人一起执行,时间就会 缩短。
如果 10 人一起执行只需要 100 分钟,这就是一种分布式场景。
场景 2:
假设有个报名系统,对报名总数统计,数据同时进行修改操作的时候有可能出现问题,
需要模拟这个场景,需要多用户并发请求数据。
使用分布式并发执行测试用例。分布式插件:pytest-xdist
安装及运行: pip install pytest-xdist
结合命令:pytest -n 核数(核数尽量不要超过电脑实际内核数,否则也没有特别大的效果),或者用pytest -n auto(自动获取我们的空闲核数)
注意: 用例多的时候效果明显,多进程并发执行,同时支持 allure
要使用pytest-xdist插件执行多进程或多线程的测试,可以使用以下命令行选项: - -n
:用于指定并发工作进程或线程的数量。 - --dist
:用于指定并发工作模式,可以是load
(进程)或loadscope
(线程)。 - -d
:用于指定并发工作进程之间的数据传递方式(仅对进程模式有效)。 以下是一些示例使用pytest-xdist插件的命令行示例: - 使用4个进程运行测试(数据传递方式为“load”):