假设我有以下测试脚本:
def b(): return 1
def a():
b()
c()
此模块有一个错误:c()
未定义/导入。但是运行这个脚本不会失败,因为 a()
没有被调用,因此 c()
并不是真正需要的。但是一旦调用 a()
,例如从另一个模块调用,或者每当我修改脚本来调用 a()
时,它就会失败。
在这个非常简单的情况下,很容易用单元测试覆盖所有可能的执行路径,这是明智的做法。不幸的是,我的代码相当复杂,我没有足够的时间来准备单元测试来覆盖所有可能的执行路径(这本身就是一个问题,我希望将来能够解决,但目前还不可能)
是否有任何方法可以检查所有执行路径中的所有符号是否都是为特定模块定义的,而无需实际测试所有执行路径?
最佳答案
类似于 pylint 的 linter或pyflakes将通过代码的静态分析来检测此类事情。
尽管如此,它们还远非完美,因为像 Python 这样的动态语言不可能覆盖所有可能的路径 - 正如你所说,不实际运行这些路径。根据我的经验,他们确实发现了大量错误。
关于python - 测试模块的所有符号是否已定义的快速方法,无需完整的单元测试覆盖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/20947267/