首页 > 解决方案 > 更新覆盖率报告而不覆盖它

问题描述

我创建覆盖率报告的方式是:

source coverage_setup.sh
setenv COVERAGE_PROCESS_START .coveragerc
myscript.py --f 1
unsetenv COVERAGE_PROCESS_START

安装脚本只是将覆盖模块(3.6.3)添加到覆盖模块PATH并将 设置PYTHONPATH为覆盖模块。

我有一个执行 multpul 时间的(非 python)脚本,myscript.py例如:

myscript.py --f 1
myscript.py --f 2
myscript.py --f 3

我希望每次执行都更新.coveragerc文件而不是覆盖它。我找不到这样做的标志。我还尝试将其更改COVERAGE_PROCESS_START为:

source coverage_setup.sh
setenv COVERAGE_PROCESS_START .coveragerc1
myscript.py --f 1
setenv COVERAGE_PROCESS_START .coveragerc2
myscript.py --f 2
setenv COVERAGE_PROCESS_START .coveragerc3
myscript.py --f 3
unsetenv COVERAGE_PROCESS_START

然后合并报告。但覆盖率报告失败并出现以下错误(执行时myscript.py):

Error in sitecustomize; set PYTHONVERBOSE for traceback:
CoverageException: Couldn't read '.coveragerc1' as a config file

有没有办法告诉覆盖模块更新相同的报告而不是覆盖它?如果没有,是否有可行的解决方法?

标签: pythoncode-coverage

解决方案


首先,如果您只是运行 Python 文件,则不需要 COVERAGE_PROCESS_START。做这个:

coverage run myscript.py --f 1

其次,您可以使用该--append标志将数据累积到数据文件中,而不是每次运行都重新开始:

coverage run --append myscript.py --f 1

推荐阅读