在post build脚本中打印jenkins中失败测试的列表

时间:2014-07-16 07:45:06

标签: junit jenkins

我有一个jenkins工作执行一些junit测试,以及一个post build步骤,如果测试失败则调用bash脚本(实际检查日志是否包含“Tests in error:”)。然后,该脚本将向skype bot发送一些文本(使用一些jenkins的环境变量)。

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

1 个答案:

答案 0 :(得分:4)

我们有一个执行单元测试的jenkins工作,并且有一个构建步骤来发布JUnit测试报告"。

这为我们提供了一个显示测试结果的页面,包括测试失败。您的脚本的一个选项是获取该页面并从中筛选出失败的测试名称(它们被隐藏在" showFailuresLink"我们的安装中的功能)。

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

http://host:7098/jenkins/job/ExecuteUnitTests/166/testReport/api/json?pretty=true&tree=suites[cases[className,name,age,status]]

给出这样的结果:

{
  "suites" : [
    {
      "cases" : [
        {
          "age" : 0,
          "className" : "com.e.authentication.SimpleAuthenticationInfoTest",
          "name" : "testGetCredentialKeys",
          "status" : "PASSED"
        },
        {
          "age" : 0,
          "className" : "com.e.authentication.SimpleAuthenticationInfoTest",
          "name" : "testGetExpirationInterval",
          "status" : "PASSED"
        },
...

足够简单,可以解析年龄>的条目。 0或状态!=已通过。可能有一种方法可以进一步优化请求以获得您想要的内容,但我没有时间玩它。