Есть ли способ получить количество тестов, которые были выполнены (или переданы) в Jenkins в Post Job Script (например, чтобы отправить этот номер в API состояния Github)?
Как получить количество тестов, запущенных в Jenkins с JUnit XML-форматом в пост-задании script?
Ответ 1
Я не видел доступа к этим номерам непосредственно из Publish JUnit test result report
подключаемого модуля Jenkins.
Тем не менее, вы всегда можете использовать/анализировать xml или json, взятые из Jenkins REST API после успешного анализа XML-кода JUnit:
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>
Ответ 2
В итоге я просто написал простой скрипт bash, который делает супер простой синтаксический анализ xml, созданного после запуска тестов. Использование API в качестве альтернативного ответа - это крутая идея, если вам нужно сделать это удаленно. В моем случае это script:
total_tests=$(cat test-reports/*.xml | grep "<testsuite" | tr -s " " | cut -d " " -f6 | cut -d "=" -f2 | sed 's/\"//g' | paste -sd+ - | bc)