12

有什么方法可以在 Post Job Script 中获取在 Jenkins 中执行(或通过)的测试数量(例如,将此数字发送到 Github Status API)?

4

2 回答 2

19

我没有看到任何直接从Publish JUnit test result reportJenkins 插件访问这些数字的方法。

但是,在成功解析 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 回答