Jenkinsfile中post always阶段coverage report无法获取测试数据
问题解决:Jenkins中Coverage报告提示"No data to report"
问题原因
Coverage默认会在当前执行目录生成名为.coverage的数据文件。你的测试步骤是在src目录下执行的,所以数据文件存在src目录里;但post阶段的命令是在Jenkins工作空间的根目录执行的,自然找不到src里的.coverage文件,所以报无数据可报告。
解决办法
方法一:让报告命令也进入src目录执行
修改post阶段的代码,同样用dir('src')包裹命令,确保和测试步骤在同一目录下执行:
stage('Test') { steps { dir('src') { sh "python3 -m coverage run -m pytest -v tests" } } post { always { dir('src') { sh "python3 -m coverage report -m" } } } }
方法二:指定统一的覆盖率数据文件路径
在执行coverage run时,通过--data-file参数指定数据文件到工作空间根目录,这样post阶段就能直接读取到:
stage('Test') { steps { dir('src') { sh "python3 -m coverage run --data-file ../.coverage -m pytest -v tests" } } post { always { sh "python3 -m coverage report --data-file .coverage -m" } } }
内容的提问来源于stack exchange,提问作者Kyle
相关产品推荐
相关产品推荐

