[英]Automatically detect non-deterministic behaviour in Python
这可能是不可能的,但我只是想知道是否有任何工具可以在我运行 Python 脚本时帮助检测非确定性行为。 也许调试器中有一些奇特的选项? 我想我在想象,从理论上讲,可以逐个指令比较堆栈指令或相同代码的两次后续运行之间的某些内容,从而找出任何分歧开始的地方。
我意识到很多事情都在幕后发生,所以这可能很难要求调试器或任何工具......
从本质上讲,我的问题是我的测试偶尔会失败,几乎可以肯定是因为在某个地方,代码意外地依赖于迭代字典的输出顺序,或者实际上无法保证顺序的某些事情。 我只是想要一个工具来帮助我找到这类问题的根源:)。
以下问题是类似的,但没有太多关于如何以自动化或通用方式真正处理此问题的建议: Testing for non-deterministic behavior of python function
我不知道有什么方法可以自动执行此操作,但是我建议您在测试失败时启动调试器,然后自动运行(隔夜?)直到失败。 然后,您可以检查变量,看看是否有任何突出之处。 如果您使用 pytest,使用--pdb
标志运行将在失败时启动调试器。
您也可以考虑使用Hypothesis来运行生成测试用例。
您还可以考虑一遍又一遍地运行测试,收集每次运行的输出(成功或失败)。 当您有代表性样本时,请比较两者,特别是运行测试的顺序!
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.