背景
这是配置的背景
- 我有用 Robot Framework 编写的测试
- 我正在使用 Jenkins 并安装了 robotframework 和 email-ext 插件
- 我有一个计划定期运行的 Jenkins 工作
- jenkins 作业运行机器人测试
- 然后发送一封包含测试结果的电子邮件(使用 email-ext)
- 我正在使用一个 groovy 脚本来生成电子邮件内容。
- 我有一个计划定期运行的 Jenkins 工作
生成电子邮件内容的常规脚本使用机器人 API来获取数据(例如:总测试、总失败、通过百分比)和有关所有失败测试用例的信息。
对于所有失败的测试用例,RoboCaseResult 列表,我包括:
- 测试关键性
- 家长套房
- 测试名称
- 错误信息
这目前正在工作。这是我的 Groovy 脚本实现了这一点:
def actionslist = build.actions // List<hudson.model.Action>
def doRobotResultsExist = false
actionslist.each() { action ->
if( action.class.simpleName.equals("RobotBuildAction") ) { // hudson.plugins.robot.RobotBuildAction
doRobotResultsExist = true
displaycritical = (action.getOverallPassPercentage() != action.getCriticalPassPercentage())
%>
<h3>RobotFramework Results</h3>
<table>
<tr>
<td>Detailed Report:</td>
<td><a href="${rooturl}${build.url}robot/report/<%= action.getLogHtmlLink() %>" target="_new"><%= action.getLogHtmlLink() %></a></td>
</tr>
<!--
<tr>
<td>Pass Percentage:</td>
<td><%= action.overallPassPercentage %>%</td>
</tr>
-->
<tr>
<td>Overall Pass Ratio:</td>
<td><%= action.getTotalCount() - action.getFailCount() %>/<%= action.getTotalCount() %></td>
</tr>
<tr>
<td>Pass Percentage:</td>
<td><%= action.getOverallPassPercentage() %>%</td>
</tr>
<%
if (displaycritical) {
%>
<tr>
<td>Critical Pass Percentage:</td>
<td><%= action.getCriticalPassPercentage() %>%</td>
</tr>
<% } //if displaycrital %>
<tr>
<td>Total Failed:</td>
<td><%= action.getFailCount() %></td>
</tr>
</table>
<%
//action.result returns hudson.plugins.robot.model.RobotResult
//action.retult.getAllFailedCases() returns a list of hudson.plugins.robot.model.RobotCaseResult
def allFailedTests = action.result.getAllFailedCases() // hudson.plugins.robot.model.RobotCaseResult
if (!allFailedTests.isEmpty()) {
i = 0
%>
<table cellspacing='0' cellpadding='1' border='1'>
<tr class='bg1'>
<% if (displaycritical) { %><th>Tagged Critical</th><% } //if displaycrital %>
<th>Suite</th>
<th>Failed Test Case</th>
<th>Error message</th>
</tr>
<%
//allFailedTests.each() { testresult ->
// def testCaseResult = testresult
allFailedTests.each() { testCaseResult ->
i++
print "<tr " + ( (i % 2) == 0 ? "class='bg2'" : "") + " >"
if (displaycritical) {
print "<td>" + (testCaseResult.isCritical()? "<font color='red'><b>YES</b></font>": "no" )+ "</td>"
}
print "<td>" + testCaseResult.getParent().getRelativePackageName(testCaseResult.getParent()) + "</td>"
print "<td>" + testCaseResult.getDisplayName() + "</td>"
print "<td>" + testCaseResult.getErrorMsg() + "</td>"
print "</tr>"
} // for each failed test
%>
</table>
<%
} // if list of failed test cases is not empty
} // end action is RobotBuildAction
} // end of each actions
这产生了这样的东西
==================================================== ======================== | 标记为关键 | 套房 | 失败的测试用例 | 错误信息 | ==================================================== ======================== | 是 | 水果 | 获取苹果 | 买不到苹果 | +-----------------+--------+------------------+--- ----------------------+ | 否 | 水果 | 吃苹果 | 找不到苹果 | ==================================================== ========================
问题
对于每个失败的测试用例,我想包括所有引发的 WARNING。但我无法为此找到 API,因此我针对 Jenkins 插件打开了增强票证。Jenkins 机器人框架插件维护者可能不会在我需要解决方案的时间范围内回复我的请求。
如何通过 groovy 脚本包含机器人测试期间引发的所有警告?也就是说,我想得到以下
==================================================== =============================================== | 标记为关键 | 套房 | 失败的测试用例 | 错误信息 | 警告 | ==================================================== =============================================== | 是 | 水果 | 获取苹果 | 买不到苹果 | 没有可用的篮子 | +-----------------+--------+------------------+--- ----------------------+----------+ | 否 | 水果 | 吃苹果 | 找不到苹果 | | ==================================================== ===============================================