You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.21 00:36:27