Python 如何在coverage和.coverage中生成两个不同的报告?
我有一个包,其中我需要生成两个不同的报告,一个用于整个存储库,另一个仅用于核心。包装如下:Python 如何在coverage和.coverage中生成两个不同的报告?,python,pytest,code-coverage,coverage.py,Python,Pytest,Code Coverage,Coverage.py,我有一个包,其中我需要生成两个不同的报告,一个用于整个存储库,另一个仅用于核心。包装如下: source/ core/ __init__.py config.py foo.py gui/ __init__.py ... locale/ __init__.py ... tests/ all/ __init__.py ...
source/
core/
__init__.py
config.py
foo.py
gui/
__init__.py
...
locale/
__init__.py
...
tests/
all/
__init__.py
...
assets/
__init__.py
...
gui/
__init__.p
...
core/
__init__.py
test_foo.py
...
__init__.py
utils.py
...
.coveragerc
setup.py
tox.ini
在tox.ini
中,我有以下代码:
[tox]
envlist = py27, py35, py36, py37
skip_missing_interpreters = true
[testenv]
deps =
coverage
pycairo<2.0.0,>=1.10.0
commands_pre =
coverage erase
commands = coverage run ./setup.py pytest
commands_post =
coverage report -m
coverage html
coverage XML
...
[testenv:py36]
commands_pre = {[testenv]commands_pre}
commands =
{[testenv]commands}
commands_post = {[testenv]commands_post}
还有pytest.ini
[pytest]
testpaths = tests
原则上这是可行的,但是,我需要为核心生成另一个覆盖率测试(仅针对源source/core
并在test/core
中运行测试)
我试图在tox.ini
中创建一个新环境,然后运行:
commands = coverage run --source=source/core ./setup.py pytest tests/core
我得到:
Coverage.py warning: No data was collected. (no-data-collected)
invalid command name 'tests/core'
ERROR: InvocationError for command
报告给了我0%
另一方面,如果我运行coverage run--source=source/core./setup.py pytest
,它将执行所有的测试,包括gui、core和其他我对此报告不感兴趣的东西,我会得到一个分段错误和另一个调用错误(可能是由与此问题无关的包的核心生成的)
这几乎不起作用的唯一方法是通过设置以下内容修改.coveragerc
:
source=
source/core
然后运行coverage run./setup.py pytest
works,我牺牲了原来的覆盖率测试
关于如何让这两个覆盖率报告独立运行(一个用于整个包,另一个仅用于核心)以及(如果可能的话)在GitLab中为其设置两个不同的徽章,有什么想法吗
非常感谢
source=
source/core