我在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
并且我能够正确地获得线路覆盖的组合报告 .
EDIT:
这是我运行我的应用程序以获得覆盖率的方式
coverage --rcfile=coverage_rc_file tester_script.py test1 test2
上面的命令运行我的应用程序两次并生成4个覆盖文件 .
然后我运行以下命令来组合结果:
coverage combine
2 回答
如果使用命令行配置coverage,则会发生错误,如下所示:
问题是命令行参数不会传递给子进程,因此主进程测量分支覆盖,子进程测量线覆盖 . 然后,合并步骤无法合并文件 .
修复是使用.coveragerc配置文件 . 但是你说你正在使用它,所以我不确定出了什么问题,除非你刚开始使用命令行参数 .
当我的单元测试在多个目录中运行代码时,我遇到了这个问题 . 我不得不在每个目录中添加.coveragerc文件,以使它们全部生成分支(aka arc)数据 . 我通过sym链接到我的主.coveragerc文件来做到这一点 .