Flaky:假设检验产生的不可靠结果是什么意思?

时间:2015-08-02 08:16:05

标签: pytest python-hypothesis

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

我收到以下错误:

  

Flaky:假设test_visiting会产生不可靠的结果:在第一次调用时出现伪造,但在后续调用中没出现

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

我该如何解决这个问题?

2 个答案:

答案 0 :(得分:5)

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

您还没有提供足够的信息来说明实际发生了什么,因此很难提供更具体的建议。如果您正在运行最新版本的假设(例如1.9.0肯定会这样做),您应该已经获得了有关正在发生的事情的非常详细的诊断 - 它将告诉您原始异常是什么并且它将报告如果传入的值似乎在调用之间发生变化。

答案 1 :(得分:0)

我未曾提及的一件事很多,这可能是一个相对较新的行为,您可能想延长测试的截止日期。以我的经验,如果一个测试用例由于错过了截止日期而失败,而第二个测试用例通过了,您会认为它是“片状”测试失败。

@hypothesis.settings(deadline=500)

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