我有测试自动化框架,测试运行是通过Jenkins驱动的。测试运行完成后,它会生成一些自定义测试报告,如html文件。在报告中,我有一个表的错误总数作为列之一。我基本上想要解析这个html文件,如果错误大于0,就会向邮件列表发送一封电子邮件。
以下是我在Jenkins的工作中所做的事情:
一个。配置作业以运行测试[这是在执行shell选项并运行我的jar,因为测试框架是一个java应用程序]
湾我有一个post构建操作,在其中我执行python代码,执行以下操作:
步骤1.获取最新的HTML报告
第2步。解析此文件。
步骤3.如果错误是> 0:
然后email_flag = true
其他:
email_flag = false。
现在有没有办法可以使用上面的标志并通过Jenkins插件发送电子邮件通知?我只是想了解这样做的最佳方法。任何帮助表示赞赏。
P.S。我做了一些额外的研究,我看到Email-ext插件[https://wiki.jenkins-ci.org/display/JENKINS/Email-ext+plugin]有一个预发送脚本选项,但我只是不知道如何使用它来运行python代码并处理电子邮件消息。< / p>
答案 0 :(得分:0)
在构建操作期间 - 即在执行测试时,当您知道测试在java中失败时,立即或在执行所有测试之后,您可以让java向shell返回一个值。
System.exit(0)
- 成功
System.exit(1)
- 失败
每当它不为0时,jenkins作业默认标记为失败。
您可以使用Email-ext
插件仅在作业失败时通过选择适当的触发器发送电子邮件 - Failure - Any
答案 1 :(得分:0)
以下是我的Extended Email Publisher Jenkins插件预发送Groovy脚本。希望您能够根据自己的需要进行调整。
它专为解析Serenity-JUnit XML文件而设计,但只需很少的工作就可以解析HTML。它将查找给定<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
中与模式sourceDirPath
匹配的任何文件。然后,"SERENITY-JUNIT-*xml"
将从file.readToString()
中提取测试结果,并将这些结果汇总到变量xmlString
中。最后,它将组成tests, passed, failures, errors, skipped
并将其附加到msgSubject
本身。
请注意,msg
,build
和logger
是插件提供的对象。您不应该更改分配和/或更改其名称。
脚本:
msg
您当然可以动态更改电子邮件的任何元素(To,From,MsgText等)。在这里,我只是改变主题。
结果如下:
健康检查:确定 - 通过4/4,失败0,错误0,跳过0。