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

dphi5xsq  于 12个月前  发布在  Python
关注(0)|答案(6)|浏览(89)

coverage.py将在其报告中包含init.py,并显示为0行,但覆盖率为100%。
我想从覆盖报告中排除所有空白文件。我不能只是将*/__init__.py添加到omit,因为我的一些__init__.py文件有代码。

lb3vh1jj

lb3vh1jj1#

从docs和docs:“5.0版新增功能:contextsskip_empty参数。”在tox.ini文件或.coveragerc文件中添加以下内容:

[coverage:report]
skip_empty = true

如果skip_empty为true,则不报告空文件(没有语句的文件)。
“skip_empty(boolean,default False):不要在报告中包含空文件(包含0条语句的文件)。有关详细信息,请参阅承保范围摘要。”

flvtvl50

flvtvl502#

coverage.py中不存在此功能。你可以对HTML报告进行排序,将100%的文件移到底部,或者将0语句的文件移到底部,这有帮助吗?
更新:从coverage.py 4.0开始,--skip-covered选项可用于执行所请求的操作。

j1dl9f46

j1dl9f463#

你可以这样设置.coveragerc文件:

[run]
omit = test/* \
       *\__init__.py

[run]
omit = com*\__init__.py \ 
       test/*

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

9avjhtql

9avjhtql4#

我这样设置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
zkure5ic

zkure5ic5#

coverage report现在支持--skip-empty指令,这将方便地忽略那些空的__init__.py文件,同时继续包含任何有内容的文件!
改编自文档

  • --skip-empty跳过任何没有可执行语句的文件
  • --skip-covered跳过任何覆盖率为100%的文件

https://coverage.readthedocs.io/en/stable/cmd.html#coverage-summary
coverage 5.0起,通过GitHub PR 864提供此功能

nnt7mjpx

nnt7mjpx6#

要排除所有空文件,即没有任何语句的文件,因此100%覆盖,您可以用途:

$ coverage report | grep -v " 0      0      0      0   100%"

不幸的是,这并没有将这些文件从覆盖率html报告中排除,而且比简单的选项更麻烦。

相关问题