首页 文章

合并分支覆盖文件python

提问于
浏览
1

我在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 回答

  • 0

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

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

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

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

  • 1

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

相关问题