.coveragerc 无法找到我想省略的文件

Posted

技术标签:

【中文标题】.coveragerc 无法找到我想省略的文件【英文标题】:.coveragerc unable to locate files I want omitted 【发布时间】:2019-06-29 09:27:51 【问题描述】:

我正在使用tox 使用pytestpytest-cov 插件自动运行我的测试。但是,我收到了我在.coveragerc 中省略的文件的覆盖率报告:

(env) alex@smartalex-pc:~/.repos/codelib/github/project$ tox

[...]

../../../tests/test_module1.py::test_func PASSED  [  3%]

[...]

../../../tests/test_module2.py::test_func PASSED  [100%]

----------- coverage: platform linux, python 3.6.7-final-0 -----------
Name                                                                                                   Stmts   Miss  Cover
--------------------------------------------------------------------------------------------------------------------------
/home/alex/.repos/codelib/github/project/.tox/py36/lib/python3.6/site-packages/package/__init__.py             0      0   100%
/home/alex/.repos/codelib/github/project/.tox/py36/lib/python3.6/site-packages/package/__main__.py             2      2     0%
/home/alex/.repos/codelib/github/project/.tox/py36/lib/python3.6/site-packages/package/application.py         40      0   100%
/home/alex/.repos/codelib/github/project/.tox/py36/lib/python3.6/site-packages/package/core.py                73      0   100%
/home/alex/.repos/codelib/github/project/.tox/py36/lib/python3.6/site-packages/package/user_interface.py      45      0   100%
--------------------------------------------------------------------------------------------------------------------------
TOTAL                                                                                                        160      2    99%

看来tox 没有使用我的.coveragerc。我尝试使用--cov-config=toxinidir/.coveragerc 明确指定配置文件,但我再次得到相同的结果。

简化项目结构:

package/
    __init__.py
    __main__.py
    application.py
    core.py
    user_interface.py
tests/
    test_module1.py
    test_module2.py
.coveragerc
pytest.ini
setup.py
tox.ini

这是我的tox.ini

[tox]
envlist = py36

[testenv]
changedir = envtmpdir
deps = 
    trio
    -r dev-requirements.txt
commands =
    pytest -v toxinidir/tests --cov=package --cov-config=toxinidir/.coveragerc

这是我的.coveragerc

[run]
omit =
    package/__main__.py
    package/__init__.py

这是我的pytest.ini

[pytest]
trio_mode = true

我认为这已经足够了,但如果您需要更多输出/信息,请告诉我。

我该如何解决这个问题?

【问题讨论】:

【参考方案1】:

将 .coveragerc 更改为:

[run]
omit =
    */package/__main__.py
    */package/__init__.py

【讨论】:

那行不通。我的模块没有得到全面覆盖(当我运行 pytest -v tests --cov=package 时会这样做),而且我还得到了一堆“内部”覆盖(比如 env/lib/python3.6/site-packages/_pytest/nose.py 37 25 32% 我确实省略了它们(__main__.py__init__.py),并指定了我想要用 --cov=package 覆盖的包。 尝试添加到 ommit *.tox**env/**__main__.py*__init__.py hmm,在文件名前面添加 glob 确实可行,但并不是我希望的解决方案。它省略了所有文件,而我只想省略两个特定文件。 好的,我现在给你一个赞成票,如果没有人提出更好的解决方案,我会将其标记为已接受。感谢您的帮助!

以上是关于.coveragerc 无法找到我想省略的文件的主要内容,如果未能解决你的问题,请参考以下文章

linux系统无法找到--prefix=命令

无法使用 vuejs 添加用户照片

z/OS Syncsort:省略不排序的重复项

无法为多行段落获取省略号 [重复]

无法滚动到锚点

在截断文本的末尾添加省略号 [重复]