在构建后脚本中打印 jenkins 中失败的测试列表

Qar*_*ion 3 junit jenkins

我有一个执行一些 junit 测试的 jenkins 作业,以及一个在测试失败时调用 bash 脚本的构建后步骤(实际上检查日志是否包含“错误测试:”)。然后脚本将一些文本(利用一些 jenkins 的环境变量)发送到 Skype 机器人。

现在我想让机器人说出哪些测试实际上失败了。我一直在浏览插件和谷歌,但到目前为止我无法判断哪些测试失败。有没有办法将失败的测试传递给脚本,或者在构建之后/期间设置环境变量?

Den*_* S. 5

我们有一个执行单元测试的 jenkins 作业,并且有一个“发布 JUnit 测试报告”的构建后步骤。

这为我们提供了一个显示测试结果的页面,包括失败的测试。您的脚本的一种选择是获取该页面并从屏幕中抓取失败的测试名称(它们被隐藏在我们安装中的“showFailuresLink”函数中)。

该页面也可通过 REST API 访问。我玩了一下,发现了这样的请求:

http://host:7098/jenkins/job/ExecuteUnitTests/166/testReport/api/json?pretty=true&tree=suites[cases[className,name,age,status]]
Run Code Online (Sandbox Code Playgroud)

给出这样的结果:

{
  "suites" : [
    {
      "cases" : [
        {
          "age" : 0,
          "className" : "com.e.authentication.SimpleAuthenticationInfoTest",
          "name" : "testGetCredentialKeys",
          "status" : "PASSED"
        },
        {
          "age" : 0,
          "className" : "com.e.authentication.SimpleAuthenticationInfoTest",
          "name" : "testGetExpirationInterval",
          "status" : "PASSED"
        },
...
Run Code Online (Sandbox Code Playgroud)

简单到可以解析出年龄 > 0 或状态 != PASSED 的条目。可能有一种方法可以进一步完善请求以获得您想要的内容,但我没时间玩它。