合并分支覆盖文件python

时间:2016-07-08 10:58:01

标签: python python-2.7 coverage.py python-coverage

我在python中有一个多处理应用程序。我正在尝试在运行测试后获得覆盖率报告。我正在尝试合并覆盖率报告,但我无法一次性完成。

以下是我面临的问题。 我的两个测试生成了4个覆盖文件。当我运行命令“coverage combine”时,我收到以下错误:

Can't combine line data with arc data

要合并覆盖文件,我需要运行“coverage combine”命令4次。但我计划添加更多测试,这将使报告的组合变得更加困难。

那么如何一次性结合所有报道?

PS: 我已按如下方式设置配置文件:

[run]
branch = True
parallel = True
concurrency = multiprocessing

[report]
# Regexes for lines to exclude from consideration
exclude_lines =
    # Have to re-enable the standard pragma
    pragma: no cover

我能够正确获取合并报告的线路覆盖率。

修改

这就是我运行应用程序以获取覆盖范围的方法

coverage --rcfile=coverage_rc_file tester_script.py test1 test2

以上命令运行我的应用程序两次并生成4个覆盖文件。

然后我运行以下命令来组合结果:

coverage combine

3 个答案:

答案 0 :(得分:1)

如果使用命令行配置coverage,则会出现错误,如下所示:

coverage run --branch --concurrency=multiprocessing myprogram.py

问题是命令行参数没有传递给子进程,因此主进程测量分支覆盖,子进程测量线覆盖。然后,合并步骤无法合并文件。

修复方法是使用.coveragerc配置文件。但是你说你正在使用它,所以我不确定出了什么问题,除非你刚开始使用命令行参数。

答案 1 :(得分:0)

当我的单元测试在多个目录中运行代码时,我遇到了这个问题。我不得不在每个目录中添加.coveragerc文件,以使它们全部生成分支(aka arc)数据。我通过sym链接到我的主.coveragerc文件来做到这一点。

答案 2 :(得分:0)

我遇到了同样的错误。该问题是由先前运行中的陈旧文件引起的。删除.coverage.*个文件很有帮助。