在Python coverage.py API中使用omit标志

jso*_*iki 6 python regex code-coverage coverage.py

我正在使用python coverage.py创建一个覆盖范围非常基本的测试套件.目前一切都很好.但是,我的覆盖率报告包括所有/usr/local/lib被调用的库和所有__init__.py文件.

以下是我的报道报告现在的样子:

self.cov.html_report(directory='coverage', omit='*Test*, */usr/local/lib*,*__init__*')
Run Code Online (Sandbox Code Playgroud)

目标是使用省略标志删除所有类,其中包含单词"Test","/ usr/local/lib"或"__init__".由于我在网上找不到太多关于API的内容(关于如何在命令行上执行此操作),有人知道使这项工作的正确语法是什么?

Tgi*_*gul 12

尝试在coverage()调用中省略不需要的文件:

self.cov = coverage.coverage(omit=['*Test*', '*/usr/local/lib*','*__init__*'])
Run Code Online (Sandbox Code Playgroud)

我建议使用coverage配置文件(默认为.coveragerc):

# .coveragerc to control coverage.py

[run]
omit =
        *__init__*
        */usr/local/lib*
        *Test*

[html]
omit =
        *__init__*
        */usr/local/lib*
        *Test*
Run Code Online (Sandbox Code Playgroud)

coverage调用默认考虑.coveragerc文件,但是如果你想确保使用:

self.cov = coverage.coverage(config_file=True)
Run Code Online (Sandbox Code Playgroud)

或者,您可以更改配置文件名并将其作为参数传递:

self.cov = coverage.coverage(config_file='/your/path/.coverage_config_file')
Run Code Online (Sandbox Code Playgroud)

希望这可以帮助.

  • 显然,现在 html 块只允许专门针对 HTML 报告输出的选项。为了省略报告中的某些文件,必须在“[report]”块中定义“omit”选项。请参阅http://coverage.readthedocs.io/en/coverage-4.0.3/config.html (3认同)

Mar*_*eca 6

创建这个.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
Run Code Online (Sandbox Code Playgroud)


Tre*_*out 2

来自http://nedbatchelder.com/code/coverage/api.html#api的文档

include 和 omit 是文件名模式的列表。匹配 include 的文件将被测量,匹配 omit 的文件则不会。每个也将接受一个字符串参数。

所以尝试一下...

self.cov.html_report(directory='coverage', omit=['*Test*', '/usr/local/lib*', '__init__*'])
Run Code Online (Sandbox Code Playgroud)