有什么方法可以在 Post Job Script 中获取在 Jenkins 中执行(或通过)的测试数量(例如,将此数字发送到 Github Status API)?
问问题
10713 次
2 回答
19
我没有看到任何直接从Publish JUnit test result report
Jenkins 插件访问这些数字的方法。
但是,在成功解析 JUnit XML 后,您始终可以使用/解析从 Jenkins REST API 获取的 xml 或 json:
http://<jenkinsHost>/job/<YourJobName>/<JobID>/testReport/api/json?pretty=true
或者
让它更通用:
http://<jenkinsHost>/job/<YourJobName>/lastSuccessfulBuild/testReport/api/json?pretty=true
对于 JSON 输出:
{
"duration" : 6109.1104,
"failCount" : 0,
"passCount" : 4389,
"skipCount" : 0,
"suites" : [
{
"cases" : [
{
...
}
],
"duration" : 0.012,
"id" : null,
"name" : "EventTest",
"stderr" : null,
"stdout" : null,
"timestamp" : null
}
]
}
http://<jenkinsInstanceHost>/job/<YourJobName>/<JobID>/testReport/api/xml
对于 XML 输出:
<testResult>
<duration>6109.1104</duration>
<failCount>0</failCount>
<passCount>4389</passCount>
<skipCount>0</skipCount>
<suite>
<case>
<age>0</age>
<className>
...
</className>
<duration>0.012</duration>
<failedSince>0</failedSince>
<name>Loop</name>
<skipped>false</skipped>
<status>PASSED</status>
</case>
<duration>0.012</duration>
<name>EventTest</name>
</suite>
</testResult>
于 2013-04-30T13:24:34.323 回答
3
我最终只写了一个简单的 bash 脚本,它对运行测试后生成的 xml 进行超级简单的解析。如果您需要远程执行此操作,则按照其他答案的建议使用 API 是一个很酷的主意。就我而言,这是脚本:
total_tests=$(cat test-reports/*.xml | grep "<testsuite" | tr -s " " | cut -d " " -f6 | cut -d "=" -f2 | sed 's/\"//g' | paste -sd+ - | bc)
于 2013-04-30T21:56:03.743 回答