如何从python覆盖单元测试中省略(删除)虚拟环境(venv)?

Rad*_*dek 11 python unit-testing coverage.py python-3.x python-venv

https://coverage.readthedocs.io/en/coverage-4.5.1a/source.html#source

我的覆盖范围还包括“venv”文件夹,无论我做什么,我都想排除它 --include 或省略没有任何效果

coverage run --omit /venv/* tests.py
Run Code Online (Sandbox Code Playgroud)

这会运行测试,但仍会添加“venv”文件夹和依赖项及其覆盖率百分比

当我做

coverage run --include tests.py
Run Code Online (Sandbox Code Playgroud)

只运行测试 - 它说

Nothing to do.
Run Code Online (Sandbox Code Playgroud)

这很烦人......有人可以帮忙吗?

Python 覆盖率报告

ssh*_*how 15

--omit选项的帮助文本说(文档

--omit=PAT1,PAT2,...  Omit files whose paths match one of these patterns.
                      Accepts shell-style wildcards, which must be quoted.
Run Code Online (Sandbox Code Playgroud)

如果不引用通配符,它​​将无法工作,因为 bash 会在将参数列表传递给覆盖二进制文件之前扩展通配符。使用单引号避免 bash 通配符扩展。

要运行我的测试而不覆盖venv/* 中的任何文件:

$ coverage run --omit 'venv/*' -m unittest tests/*.py && coverage report -m
........
----------------------------------------------------------------------
Ran 8 tests in 0.023s

OK
Name                      Stmts   Miss  Cover   Missing
-------------------------------------------------------
ruterstop.py                 84      8    90%   177, 188, 191-197, 207
tests/test_ruterstop.py     108      0   100%
-------------------------------------------------------
TOTAL                       192      8    96%
Run Code Online (Sandbox Code Playgroud)

如果您通常使用普通python -m unittest来运行您的测试,您当然也可以省略测试目标参数。

$ coverage run --omit 'venv/*' -m unittest
$ coverage report -m
Run Code Online (Sandbox Code Playgroud)


Ste*_*uch 2

命令:

coverage run --omit /venv/* tests.py
Run Code Online (Sandbox Code Playgroud)

省略覆盖范围/venv(即:venv脱离根)。

您应该尝试使用相对目录,例如:

coverage run --omit venv tests.py
Run Code Online (Sandbox Code Playgroud)

  • 发现它,同样的问题,就像其他覆盖率一样 - 它使用 .coveragerc 文件,其中你有 glob - 也通过帮助尝试了所有内容 - 不起作用 - 我在项目目录中没有文件夹,只有 venv,如果我将该文件 glob [ run] 在文件中省略,它说无法从文件中读取,我不知道如何使其工作,命令或文件全局 - 没有任何效果。谢谢你的帮助 (2认同)