python-3.x pytest xdist:测试失败的次数因工作器的数量而异

t3irkdon  于 2023-08-08  发布在  Python
关注(0)|答案(1)|浏览(74)

我使用xdist来加速我的pytest执行。一切似乎都很好,直到我最近尝试用不同数量的工人运行pytest。

  • pytest-n 8给出了36个失败的测试
  • pytest -n 9给出了37个失败的测试
  • pytest -n 11产生38个失败的测试
  • pytest -n 12产生36个失败的测试

代码中没有随机性,运行这些不同的pytest命令会可靠地重现相应数量的失败测试。代码中也没有时间限制,比如“xyz必须在此时间内发生”。
我很困惑,我对pytest结果的信任度也降低了。如何找出这种不需要的行为的原因,并在不切换回非分布式pytest执行的情况下消除它?
插件:forked-1.3.0,xdist-2.5.0,anyio-3.5.0
我检查了“额外”的失败测试用例,发现一些应该失败的测试没有失败,而其他不应该失败的测试却失败了。
pytest-n auto运行8个工作器和相同数量的失败测试,但是一个失败的测试与pytest-n 8和pytest-n auto“不同地”失败(Assert中检查的条件具有不同的值),运行pytest-n 8再次给出与之前完全相同的失败测试和失败Assert/条件。
所以它真的必须以不同的方式运行pytest。
我也只运行了没有-n的pytest,这也导致了一些错误的结果。错误的意思是:当我手动运行代码时,结果是不同的。

xxhby3vn

xxhby3vn1#

我找到了解决办法:一个变量,应该是一个示例变量,它是一个类变量。这会导致运行多个测试时的副作用。将其作为示例变量解决了这个问题。

相关问题