忽略覆盖率报告中的空文件

sha*_*bda 16 python code-coverage

coverage.py将在其报告中包含init .py并将其显示为0行,但覆盖率为100%.

我想从覆盖率报告中排除所有空白文件.我不能只是添加*/__init__.py,omit因为我的一些__init__.py文件有代码.

bwl*_*289 11

来自文档文档:“5.0 版中的新功能:contextsskip_empty参数。” 在您的tox.ini文件或.coveragerc文件中添加以下内容:

[coverage:report]
skip_empty = true
Run Code Online (Sandbox Code Playgroud)

“如果skip_empty 为真,则不要报告空文件(那些没有声明的文件)。”

“skip_empty(布尔值,默认为 False):不要在报告中包含空文件(那些有 0 个语句的文件)。有关详细信息,请参阅覆盖范围摘要。”


Ned*_*der 8

这个特性在coverage.py 中不存在。您可以对 HTML 报告进行排序以将 100% 的文件移至底部或将 0 条语句的文件移至底部是否有帮助?

更新:从coverage.py 4.0 开始,该--skip-covered选项可以完全满足要求。

  • 来自文档:“--skip-covered 开关将忽略任何具有 100% 覆盖率的文件。” 所以它会用 0 个或多个语句跳过这两个文件。OP 要求跳过空文件,所以不完全是。 (8认同)

Wak*_*eng 7

我这样设置 pyproject.toml :

[tool.coverage]
    [tool.coverage.run]
    omit = [
        # omit anything in a .local directory anywhere
        '*/.local/*',
        '__init__.py',
        'tests/*',
        '*/tests/*',
        # omit anything in a .venv directory anywhere
        '.venv/*'
    ]

    [tool.coverage.report]
    skip_empty = true
Run Code Online (Sandbox Code Playgroud)


小智 5

您可以像这样设置 .coveragerc 文件:

[run]
omit = test/* \
       *\__init__.py 
Run Code Online (Sandbox Code Playgroud)

或者

[run]
omit = com*\__init__.py \ 
       test/*
Run Code Online (Sandbox Code Playgroud)

似乎省略不允许模式以星号(*)开头

  • 星号一开始在“[run]”部分为我工作,例如:“omit = */__init__.py”。我正在使用 pytest 5.0.1 和 `cov`-plugin 版本 2.7.1 (即 pytest-cov)。 (2认同)