我正在使用假设 python 包进行测试。
我收到以下错误:
不稳定:假设 test_visiting 产生不可靠的结果:在第一次调用时被伪造,但在随后的调用中没有
据我所知,测试工作正常。
我该如何解决这个问题?
我正在使用假设 python 包进行测试。
我收到以下错误:
不稳定:假设 test_visiting 产生不可靠的结果:在第一次调用时被伪造,但在随后的调用中没有
据我所知,测试工作正常。
我该如何解决这个问题?
它或多或少意味着它所说的:您有一个测试第一次失败,但在使用相同的示例重新运行时第二次成功。这可能是一个假设错误,但通常不是。最常见的原因是您的测试依赖于某些外部状态 - 例如,如果您使用的是系统随机数生成器而不是假设提供的,或者您的测试创建了一些文件并且仅在文件失败时才会失败在测试开始时不存在。造成这种情况的第二个最常见原因是您的失败是递归错误,而在一个函数调用级别触发它的示例在另一个级别没有触发它。
您还没有真正提供足够的信息来说明实际发生的情况,因此很难提供比这更具体的建议。如果您正在运行 Hypothesis 的最新版本(例如 1.9.0 肯定会这样做),您应该已经获得了有关正在发生的事情的非常详细的诊断信息 - 它会告诉您您得到的原始异常是什么,并且它会报告如果传入的值似乎在调用之间发生变化。
我没有看到很多提到的一件事,它可能是一种相对较新的行为,那就是您可能希望提高测试的截止日期。根据我的经验,如果一个测试用例由于错过最后期限而失败,而第二个通过,你会认为它是一个“不稳定的”测试失败。
@hypothesis.settings(deadline=500)
我很难找到一些我个人可以完全理解的关于这种行为的适当文档,但这似乎为我解决了这个问题。