我在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
答案 0 :(得分:1)
如果使用命令行配置coverage,则会出现错误,如下所示:
coverage run --branch --concurrency=multiprocessing myprogram.py
问题是命令行参数没有传递给子进程,因此主进程测量分支覆盖,子进程测量线覆盖。然后,合并步骤无法合并文件。
修复方法是使用.coveragerc配置文件。但是你说你正在使用它,所以我不确定出了什么问题,除非你刚开始使用命令行参数。
答案 1 :(得分:0)
当我的单元测试在多个目录中运行代码时,我遇到了这个问题。我不得不在每个目录中添加.coveragerc文件,以使它们全部生成分支(aka arc)数据。我通过sym链接到我的主.coveragerc文件来做到这一点。
答案 2 :(得分:0)
我遇到了同样的错误。该问题是由先前运行中的陈旧文件引起的。删除.coverage.*
个文件很有帮助。