使用 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__.:
我有一个 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__.: