gpt4 book ai didi

python - pytest-randomly - 检测测试耦合

转载 作者:行者123 更新时间:2023-12-04 16:46:06 28 4
gpt4 key购买 nike

总结一下问题:
我有大约 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 次来解决。 order - 每次排除一个测试,并检查测试是否仍然失败。如果它们失败,则排除的测试是 noise ,如果他们不这样做,则排除测试是重现错误所必需的。这样,在 1000 次运行后,我应该有一组更小的测试导致错误。但这听起来很明显已经实现了。
  • 另一个问题是 - 如何重新创建确切的测试顺序,但没有 chosen测试?
  • 我基本上是在寻找可以查看给定序列的东西......类似于 git rerere 通过 git commits 的方式。
  • 最佳答案

    我没有随机使用 pytest,但我可以建议一个算法:

  • 放弃在失败的测试之后运行的所有测试。
  • 将数据分成两半。
  • 运行每一半的测试,在每一半之后运行失败的测试。
  • 如果失败的测试成功,则丢弃那一半的所有测试。
  • 转到第 2 步。

  • 它本质上是一个二分搜索,但将失败的测试放在通常的位置。一旦二分搜索的范围缩小到只包括失败测试以外的一个元素,你就知道它是耦合的。

    关于python - pytest-randomly - 检测测试耦合,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/66819569/

    28 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com