我如何在coverage 和.coveragerc 中生成两种不同的报告?

问题描述

我有一个包,我需要在其中生成两个不同的报告,一个用于整个存储库,另一个仅用于核心。包是这样的:

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}

我想这里最重要的是这条线 coverage run ./setup.py pytest

我的 .coveragerc 看起来像:

[run]

source=
    source

omit =
        *__init__*
        */usr/local/lib*
        */test*

还有 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,它将执行所有测试,包括 guicore 和其他我不感兴趣的东西在此报告中,我收到了分段错误和另一个调用错误(可能由与此问题无关的包核心生成

这几乎不起作用的唯一方法是通过设置修改 .coveragerc

source=
    source/core

然后运行 ​​coverage run ./setup.py pytest 的作品我已经牺牲了原来的覆盖率测试。

关于如何让这两个覆盖率报告独立运行(一个用于 WHOLE 包,另一个仅用于核心)以及如果可能,在 GitLab 中为它提供两个不同的徽章有什么想法吗?

非常感谢!

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)