有没有人注意到pytest和xdist的下列奇怪行为。py.test与xdist没有执行用随机值进行参数化的测试
当试图运行使用一些随机选择的值进行参数化的测试时,测试并非实际运行。 如果未使用xdist,则执行相同的测试时不会有任何问题。
以下代码可用于重现此操作。
import pytest
import random
PARAMS_NUMBER = 3
PARAMS = []
for i in range(PARAMS_NUMBER):
PARAMS.append(random.randrange(0, 1000))
@pytest.mark.parametrize('rand_par', PARAMS)
def test_random_param(rand_par):
assert 500 > rand_par
没有xdists它工作正常。
随着xdist没有测试所有执行与下面的输出
============================= test session starts =============================
platform win32 -- Python 2.7.3 -- py-1.4.24 -- pytest-2.6.2
plugins: xdist
gw0 [3]/gw1 [3]/gw2 [3]/gw3 [3]
scheduling tests via LoadScheduling
============================== in 1.93 seconds ===============================
版本我使用的是:
- 蟒蛇2.7.3
- pytest 2.6.2
- pytest -xdist 1.11
Addit有理注:
对于某些旧版本(xdist 1.8和pytest 2.4.X或2.5.X不完全记得了)的xdist被提前
assert collection == col
感谢停在声明中dsession.py任何帮助如何解决它或至少解决它:)
也许一些代码加载你的.py文件超过一次,然后它不是从第一负载找到测试参数(因为它们是随机的不同)? – 2014-09-21 12:32:36
@ArminRigo从我的调查看来,每个子进程都在收集测试,然后xdist正在检查每个子进程是否收集到相同的一组测试(在随机参数的情况下,我们为每个子进程获得不同的参数集) – Marek 2014-09-22 18:06:18