该夹具将运行多少次:
@pytest.fixture(scope="module")
def foo():
return True
def test1(foo):
pass
def test2(foo):
pass发布于 2022-10-21 14:23:59
它将每xdist工作线程运行一次。
这不是您作为一个新用户所期望的,但是解释是每个xdist工作进程实际上都在运行一个完整的不同的会话,每个会话中只有一个测试用例的子集。
这种错误的假设--一个pytest调用等于一个测试会话--今天也让我感到震惊,只是更糟,因为我有一个参数化的cpu和内存繁重的模块范围的夹具(在许多不同的输入文件上作为子进程运行测试的二进制文件),因此在许多测试案例中都使用了它,因此它在每个工作人员的每个文件中运行一次,并将我的cpu固定了几分钟,然后使我耗尽了交换。
我的解决方案是使用pytest -n auto =loadscope,按顺序运行所有使用该特定夹具的测试,并且仍然并行地执行其他有用的工作。
在2018年的这个问题中,有一些有用的解决方法可以用来解决一些用例:https://github.com/pytest-dev/pytest-xdist/issues/271。
从2013年起,讨论本身就有了很大的历史。他们最终表示,这不是他们的问题,因为当不使用xdist外接程序:https://github.com/pytest-dev/pytest/issues/252时,会话按预期工作。
https://stackoverflow.com/questions/60655102
复制相似问题