25

我想知道是否可以将coverage.xml文件合并到 1 个文件中以在 HTML 输出中查看全局报告。

我已经将我的unit/functional tests运行作为第一个命令和integration tests第二个命令。这意味着我的覆盖范围unit/functional testsunit tests.

如果我对这个问题有一些解决方案,主要是通过将这些文件组合成一个文件,那就太好了。

4

5 回答 5

28

我找到了不同的解决方案。我使用了combine功能(在这里阅读)所以我像这样运行我的报道:coverage run -p然后我就这样做了coverage combine

就这样。它生成 1 个组合报告。

于 2014-10-07T08:40:07.323 回答
24

您不能合并 .xml 文件,但可以合并原始数据文件。您的工作流程将如下所示:

$ COVERAGE_FILE=.coverage_func coverage run the_functional_tests.py
$ COVERAGE_FILE=.coverage_inte coverage run the_integration_tests.py
$ coverage combine
$ coverage xml
于 2014-10-06T15:09:50.713 回答
16

您可以使用附加选项来获得相同的结果。假设您在三个 python 脚本上运行覆盖。在第一次覆盖后使用 -a 进行附加。

coverage run first.py
coverage run -a second.py
coverage run -a third.py

打印报告

coverage report -m

输出:报告

Name             Stmts   Miss  Cover   Missing
----------------------------------------------
first.py           97      1    99%   95
second.py            1      0   100%
third.py            10      0   100%
----------------------------------------------
TOTAL               108      1    99%
于 2019-01-09T09:42:01.490 回答
3

如果您的源代码位于名为 的目录中,如果您已包含并在您的虚拟环境中my_project,您也可以这样做:pytestpytest-cov

pytest --cov-report html --cov=my_project unit_tests
pytest --cov-report html --cov=my_project --cov-append functional_tests

--cov-append会将功能测试覆盖率信息添加到运行单元测试时创建的覆盖率文件中。

于 2019-10-08T00:15:56.697 回答
0

我有类似的情况,我有多个包,每个包都有自己的测试,并且使用自己的测试运行程序运行。所以我可以按照这些步骤组合所有的覆盖 xml。

  1. 单独生成覆盖率报告。
    您需要导航到每个包并在该包中生成报告。这将创建.coverage文件。您还可以[run]parallel=True在您.coveragerc的创建覆盖文件中添加附加机器名称和进程 ID。

  2. 汇总所有报告。
    您需要将.coverage这些包的所有文件复制到 seaparte 文件夹。您可能需要运行批处理或 sh 脚本来复制所有覆盖文件。

  3. 运行结合。
    现在,当您拥有所有报告文件时,导航到该文件夹​​,然后运行coverage combine​​. 这将删除所有覆盖文件并将其合并为一个.coverage文件。现在你可以运行coverage htmlcoverage xml.

于 2020-08-12T08:55:25.160 回答