Python 快速测试是否为模块定义了所有符号,而无需完整的单元测试覆盖率

Python 快速测试是否为模块定义了所有符号,而无需完整的单元测试覆盖率,python,symbols,Python,Symbols,假设我有以下测试脚本: def b(): return 1 def a(): b() c() 此模块存在错误:c()未定义/导入。但是运行这个脚本不会失败,因为没有调用a(),因此实际上不需要c()。但是只要调用a(),例如从另一个模块调用,或者每当我修改脚本以调用a(),它就会失败 在这种非常简单的情况下,可以很容易地使用unittest覆盖所有可能的执行路径,这是最好的做法。不幸的是,我的代码非常复杂,我没有足够的时间准备单元测试来覆盖所有可能的执行路径(这本身就是一个问

假设我有以下测试脚本:

def b(): return 1

def a():
    b()
    c()
此模块存在错误:
c()
未定义/导入。但是运行这个脚本不会失败,因为没有调用
a()
,因此实际上不需要
c()
。但是只要调用
a()
,例如从另一个模块调用,或者每当我修改脚本以调用
a()
,它就会失败

在这种非常简单的情况下,可以很容易地使用unittest覆盖所有可能的执行路径,这是最好的做法。不幸的是,我的代码非常复杂,我没有足够的时间准备单元测试来覆盖所有可能的执行路径(这本身就是一个问题,我希望在将来解决,但目前不可能)

是否有任何方法可以检查所有执行路径中的所有符号是否都是为特定模块定义的,而不实际测试所有执行路径?

类似linter或将通过对代码的静态分析来检测此类事情


不过,它们还远远不够完美,因为在Python这样的动态语言中,不可能覆盖所有可能的路径——正如您所说,如果不实际运行这些路径。根据我的经验,他们确实发现了很多错误。

太好了,谢谢。我没有这方面的经验,但无论如何我会试试的。我希望它们足够容易使用,至少可以得到基本的报告。