我正在使用以下命令运行测试:
nosetests --with-coverage --cover-html --cover-package mypackage
我希望更新覆盖率报告,即使开发人员将新的、未经测试的代码添加到包中。
例如,假设开发人员向包中添加了一个新模块,但忘记为它编写测试。由于测试可能不会导入新模块,因此代码覆盖率可能不会反映未覆盖的代码。显然,这是可以在代码审查阶段阻止的,但更早地发现它会很棒。
我的解决方案是编写一个简单的测试,动态导入顶级包下的所有模块。我使用以下代码片段来执行此操作:
import os
import pkgutil
for loader, name, is_pkg in pkgutil.walk_packages([pkg_dirname]):
mod = loader.find_module(name).load_module(name)
像这样动态导入子包和子模块不会被nose中的代码覆盖插件拾取。
任何人都可以提出更好的方法来实现这种类型的事情吗?