0

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

例子:

@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 一起使用。

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

提前致谢。

4

0 回答 0