使用 coverage.py,如何跳过 import 和 def 语句的覆盖

With coverage.py, how to skip coverage of import and def statements

我有一个 python 程序可以导入其他文件,这些文件可能会导入其他文件,这在 python 开发中是正常的

问题是,当我使用 coverage.py 测量覆盖率时,一些导入但未使用的文件在 def 和 import 语句中获得覆盖率 "hits"。

我的问题是:有没有办法避免这些命中?对于我的特定应用程序,这些命中被认为是噪音。

Coverage.py 可以控制要包含的文件和忽略的文件:http://coverage.readthedocs.io/en/coverage-4.5.1/source.html 您可以定制它将测量的文件。

由于 coverage.py 不提供此功能,我的解决方案是编写一个基于 ast 的小函数来计算幽灵生命值并将其从 coverage.py 结果中移除

您可以根据文档 https://coverage.readthedocs.io/en/coverage-4.2/excluding.html#advanced-exclusion 使用 exclude_lines 配置。

例如(引用上面粘贴的link):

[report] exclude_lines = pragma: no cover def __repr__ if self.debug: if settings.DEBUG raise AssertionError raise NotImplementedError if 0: if __name__ == .__main__.: