分布式执行(pytest-xdist)
官网: https://github.com/pytest-dev/pytest-xdist
安装 pytest-xdist
pip install pytest-xdist
并行测试
pytest -n auto
根据当前系统CPU数量,自动启动尽可能多的进程数,也可以指定并行数量如:
pytest -n 3
并行顺序控制
- –dist load:(默认)无顺序,哪个worker空闲可用,就将用例分配到那个worker上执行。
- –dist loadscope: 按模块和类分组,以组为单位,将用例分配到worker上执行。
- –dist loadfile: 按模块(文件)分组,以组为单位,将用例分配到worker上执行。
- –dist loadgroup:按用例中的mark标识
xdist_group
分组, 以组为单位,将用例分配到worker上执行。
如下:
@pytest.mark.xdist_group(name="group1")
def test1():
pass
class TestA:
@pytest.mark.xdist_group("group1")
def test2(self):
pass
用例test1 和 用例TestA::test2 会在同一个worker上执行。
重复执行用例(pytest-repeat)
安装pytest-repeat
pip install pytest-repeat
–count 指定重复执行次数
pytest --count=5
用例会重复执行5次
–repeat-scope 指定执行顺序
-repeat-scope可以设置参数: session , module,class或者function(默认值)
- function(默认)范围针对每个用例重复执行,再执行下一个用例
- class 以class为用例集合单位,重复执行class里面的用例,再执行下一个
- module 以模块为单位,重复执行模块里面的用例,再执行下一个
- session 重复整个测试会话,即所有收集的测试执行一次,然后所有这些测试再次执行等等
pytest --count=2 --repeat-scope=session
先执行完所有用例1次,再重复执行第2次。
@pytest.mark.repeat(count) 在代码中指定某个用例重复执行
@pytest.mark.repeat(2)
def test_open_android():
print("------android用例------")
重复测试直到失败
pytest --count=1000 -x test_sample.py
这将尝试运行test_sample.py 1000次,但一旦发生故障就会停止
转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。