python-pytest常用插件

分布式执行(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次,但一旦发生故障就会停止


转载请注明来源,欢迎对文章中的引用来源进行考证,欢迎指出任何有错误或不够清晰的表达。
My Show My Code