Flaky: Hypothesis test produces unreliable results 是什么意思?

What does Flaky: Hypothesis test produces unreliable results mean?

我正在使用假设 python 包进行测试。

我收到以下错误:

Flaky: Hypothesis test_visiting produces unreliable results: Falsified on the first call but did not on a subsequent one

据我所知,测试工作正常。

我该如何解决这个问题?

这或多或少意味着它所说的:您有一个测试第一次失败但在使用相同示例重新运行时第二次成功。这个 可能 是假设错误,但通常不是。最常见的原因是您有一个依赖于某些外部状态的测试 - 例如如果您使用的是系统随机数生成器而不是假设提供的生成器,或者如果您的测试创建了一些文件并且仅当文件在测试开始时不存在时才会失败。第二个最常见的原因是您的失败是递归错误,而在一个函数调用级别触发它的示例在另一级别没有。

您没有真正提供足够的信息来说明实际情况,因此很难提供比这更具体的建议。如果您是 运行 最新版本的 Hypothesis(例如 1.9.0 确实如此),您应该已经得到了关于正在发生的事情的非常详细的诊断 - 它会告诉您您得到的原始异常是什么以及它将报告传入的值是否在调用之间发生变化。

有一件事我没有经常提到,它可能是一个相对较新的行为,那就是您可能想要延长测试的截止日期。以我的经验,如果一个测试用例由于错过最后期限而失败,而第二个通过,您会认为它是 "flaky" 测试失败。

@hypothesis.settings(deadline=500)

我很难找到一些我个人可以完全理解的关于此行为的适当文档,但这似乎为我解决了这个问题。