python - 测试模块的所有符号是否已定义的快速方法,无需完整的单元测试覆盖

标签 python symbols

假设我有以下测试脚本:

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/

相关文章:

ruby - 全局符号上下文中的类与实例方法

c# - 如何在 C# 中编写代表性别男性的符号

python - 如何让我的 Discord 机器人看起来像是正在打字?

GCC:可见性内部 "pretty useless in real world usage"以什么方式?

python - 如何在 Django 1.9 的字符串中访问模型名称

python - 从元素之间的位置关系构建列表

ruby - key : value vs key :value in ruby?

f# - 为什么在 F# 中管道和何时之间需要一个虚拟符号文字?

python - 用零填充 numpy 数组,并使用另一个数组作为 1 的索引

python - Pandas groupby : compute (relative) sizes and save in original dataframe