跨多个设备的pytest并行测试

问题描述

我有一个测试类,我想用它来测试多个设备。我正在为设备使用参数化,并使用 pytest-xdist 并行运行它们。我遇到的问题是负载平衡可以在运行测试的设备上启动新测试,导致新测试失败。有没有办法让每个工作人员从 xdist 开始只运行带有一个参数的测试,例如 worker1 为 d1 运行测试,然后为其他工作人员和设备退出相同的测试?

示例:

@pytest.mark.parametrize('device',['d1','d2','d3','d4'])
class MyTestClass:

     def test_1(self,device)

     def test_2(self,device)

     def test_3(self,device)

     def test_4(self,device)

我的 pytest 命令是 pytest -n4。虽然 test_1 在 d1 上运行,但在 d1 上无法执行任何其他操作,但测试需要按此顺序运行,这也是因为硬件 d4 比其他 3 个设备需要更长的时间来运行某些测试。例如,worker 4 使用 d4 启动 test_1,然后另一个 worker 完成其测试并使用 d4 启动 test_2,导致 test_2 失败。我尝试将 --dist 命令与 loadscope 一起使用。

我想到的唯一其他解决方案是将每个设备分解成一个单独的测试文件,但这似乎有太多重复的代码

提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)