如何在两个不同Jenkins任务中自动化比对测试用例总数?
自动化比对Jenkins两个任务的测试用例总数
方法一:调用Jenkins REST API
Jenkins自带REST API,无需额外插件即可获取任务测试统计数据:
- 先在个人设置里生成API Token,替代明文密码用于身份验证
- 获取两个任务最新构建测试总数的Shell命令示例:
# 获取任务A的测试用例总数 curl -u 用户名:API_TOKEN "http://你的Jenkins地址/job/任务A/lastBuild/testReport/api/json?tree=totalCount" # 获取任务B的测试用例总数 curl -u 用户名:API_TOKEN "http://你的Jenkins地址/job/任务B/lastBuild/testReport/api/json?tree=totalCount" - 可将上述请求整合到Shell/Python脚本中,解析返回的JSON数据自动比对数值,还能添加差值阈值告警逻辑
方法二:借助Jenkins插件简化操作
- Test Result Analyzer:支持在Jenkins界面直观对比多任务测试统计,也可导出CSV格式数据用于后续批量处理
- Pipeline Utility Steps(针对Pipeline任务):在流水线脚本中直接读取测试报告统计值并完成比对:
def testStatsA = junit testResults: '**/target/surefire-reports/*.xml', returnStatus: true, allowEmptyResults: true def testStatsB = junit testResults: '**/target/surefire-reports/*.xml', returnStatus: true, allowEmptyResults: true if (testStatsA.totalCount != testStatsB.totalCount) { echo "任务A与B测试用例总数不一致:A=${testStatsA.totalCount}, B=${testStatsB.totalCount}" currentBuild.result = 'UNSTABLE' }
方法三:自定义脚本适配特殊测试报告
若任务使用非JUnit标准格式的测试报告,可编写Python/Shell脚本:
- 直接从Jenkins服务器的任务工作区读取测试报告文件(XML/JSON等格式)
- 解析文件中的测试用例总数字段,执行比对逻辑
- 将脚本封装为Jenkins定时任务,自动执行并输出比对结果
注意:若Jenkins开启CSRF保护,调用API前需先请求http://你的Jenkins地址/crumbIssuer/api/json获取Crumb值,添加到请求头中完成身份验证。
内容的提问来源于stack exchange,提问作者TRK
相关产品推荐
相关产品推荐

