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