我正在使用python coverage.py来创建一个覆盖范围非常基本的测试套件。目前一切都很好。但是,我的覆盖率报告包括所有被调用的/usr/local/lib
库和所有__init__.py
个文件。
以下是我的报道报告现在的样子:
self.cov.html_report(directory='coverage', omit='*Test*, */usr/local/lib*,*__init__*')
目标是使用省略标志删除所有类,其中包含“Test”,“/ usr / local / lib”或“__init__”。由于我在网上找不到太多关于API的内容(关于如何在命令行上执行此操作),有人知道使这项工作的正确语法是什么?
答案 0 :(得分:11)
尝试在coverage()调用中省略不需要的文件:
self.cov = coverage.coverage(omit=['*Test*', '*/usr/local/lib*','*__init__*'])
我建议使用coverage配置文件(默认为.coveragerc):
# .coveragerc to control coverage.py
[run]
omit =
*__init__*
*/usr/local/lib*
*Test*
[html]
omit =
*__init__*
*/usr/local/lib*
*Test*
默认情况下,coverage调用会考虑.coveragerc文件,但如果您想确保使用:
self.cov = coverage.coverage(config_file=True)
或者,您可以更改配置文件名并将其作为参数传递:
self.cov = coverage.coverage(config_file='/your/path/.coverage_config_file')
希望这有帮助。
答案 1 :(得分:2)
来自http://nedbatchelder.com/code/coverage/api.html#api
的文档包含和省略文件名模式列表。匹配的文件 包括将被测量,匹配省略的文件将不会。每个人都会 也接受单个字符串参数。
所以试试吧......
self.cov.html_report(directory='coverage', omit=['*Test*', '/usr/local/lib*', '__init__*'])
答案 2 :(得分:0)
创建此.coveragerc
文件
# .coveragerc to control coverage.py
[run]
branch = True
omit =
*Test*
*/usr/local/lib*
*/__init__.py
[report]
omit =
*Test*
*/usr/local/lib*
*/__init__.py
# Regexes for lines to exclude from consideration
exclude_lines =
# Have to re-enable the standard pragma
pragma: no cover
# Don't complain about missing debug-only code:
def __repr__
if self\.debug
# Don't complain if tests don't hit defensive assertion code:
raise AssertionError
raise NotImplementedError
# Don't complain if non-runnable code isn't run:
if 0:
if __name__ == .__main__.:
ignore_errors = True
[html]
directory = coverage_html_report