【发布时间】:2021-03-26 15:11:28
【问题描述】:
总结问题:
我有大约 1000 个测试,用 pytest-randomly 测试。我知道它们由于耦合而失败,例如--randomly-seed=42:
test_1 OK
test_2 OK
...
test_x OK [the one I want to find]
...
test_y FAILED [ y and x are coupled ]
...
test_1000
我想自动找到创建耦合的最小测试序列(对于本示例,它将是test_x -> test_y)。有什么办法吗?
你尝试过的
-
运行整个测试套件直到我发现种子 42 会产生错误。
-
我认为这可以通过以
--randomly-seed=42的顺序运行测试用例 1000 次来解决 - 每次都排除一个测试,并检查测试是否仍然失败。如果他们失败了,排除的测试是noise,如果他们没有,排除的测试是重现错误所必需的。这样,在运行 1000 次后,我应该有一组更小的测试导致错误。但这听起来显然已经实现了。 -
其他问题是 - 如何重新创建确切的测试顺序,但没有一个
chosen测试? -
我基本上是在寻找可以通过给定序列查看的东西...类似于 git rerere 通过 git 提交的方式。
【问题讨论】:
-
我认为没有现成的解决方案,但编写一个能够做到这一点的 pytest 插件可能是个好主意……可能基于 pytest-reverse。感谢您提到
git rerere,不知道这一点:)