RobotFramework與Jenkins集成后發送groovy報告(比別處多了用例作者信息)


https://www.cnblogs.com/gcgc/p/10037891.html

這篇文章中最終的發送報告是這個樣子,每天大家看到這封郵件后也不知道是不是自己的用例錯誤了,導致大家不積極回復郵件說明失敗原因,

 

 經過修改robot_results.groovy文件內容,將【Elapsed Time】列修改為【作者】

優化后如下:

 

 在寫case時,只要約定每條用例的第一個tags寫上作者的名字,同時略微修改robot_results.groovy文件,將顯示時間的代碼注釋掉,換為獲取tag的代碼,

主要就是這行,<td class="case"><%= tc.tags[0] %></td>,用來獲取用例的第一個tag

<%  
 import java.text.DateFormat  
 import java.text.SimpleDateFormat  
%> 
<!-- Robot Framework Results --> 
<!DOCTYPE html>
<html>
<style type="text/css">
table {width:720px;table-layout:fixed;}
td {width:180px;}
td.title {
    background-color:#CCFF99;
    text-align: center;
}
td.suite{background-color:#EEE8AA;}
td.case{background-color:#dff0d8;}
td.head{background-color:#1E90FF;}
td.error {background-color:#FF6666;}
table thead tboday tr td {cellspacing:0px;border:1px;}
h2.span{color:white;}
span.pass{color:#66CC00;}
span.fail{color:#FF3333;}
</style>
<body>
<%  
 def robotResults = false  
 def actions = build.actions // List<hudson.model.Action>  
 actions.each() { action ->  
    if( action.class.simpleName.equals("RobotBuildAction") ) { // hudson.plugins.robot.RobotBuildAction  
        robotResults = true 
%>
        <div>
            <table cellpadding="4" align="left">
                <thead>
                    <tr>
                        <td class="title" colspan="4"><h2><span>${project.name}</span><span>  自動化測試報告</span></h2></td>
                    </tr>
                    <tr>
                        <td class="case"><b>詳細報告</b></td>
                        <td colspan="3" class="case"><a href="${rooturl}${build.url}robot/report/report.html">點擊查看報告詳情</a></td>
                    </tr>
                    <tr>
                        <td class="head"><b>用例總數</b></td>
                        <td class="head"><b>通過</b></td>
                        <td class="head"><b>不通過</b></td>
                        <td class="head"><b>通過率</b></td>
                    </tr>
                    <tr>
                        <td class="case"><%= action.result.overallTotal %></td>
                        <td class="case"><b><span class="pass"><%= action.result.overallPassed %></span></b></td>
                        <td class="case"><b><span class="fail"><%= action.result.overallFailed %></span></b></td>
                        <td class="case"><%= action.overallPassPercentage %>%</td>
                    </tr>
                    <tr>
                        <td colspan="2" class="head"><b>Test Name</b></td> 
                        <td class="head"><b>Status</b></td>
                        <!-- <td class="head"><b>Elapsed Time</b></td> -->
                        <!-- 將這里的運行持續時間修改為該用例的第一個tag,也就是作者 -->
                        <td class="head"><b>作者</b></td> 
                    </tr>
                </thead>
                <tboday>
<% 
 def suites = action.result.allSuites  
 suites.each() { suite ->   
    def currSuite = suite  
    def suiteName = currSuite.displayName  
    //忽略最上層結構兩個占位的元素  
    while (currSuite.parent != null && currSuite.parent.parent != null) {  
        currSuite = currSuite.parent  
        suiteName = currSuite.displayName + "." + suiteName  
    }
%> 
                    <tr>
                        <td colspan="4" class="suite"><b><%= suiteName %></b></td>
                    </tr>
<%  
    DateFormat format = new SimpleDateFormat("yyyyMMdd HH:mm:ss")
    def execDateTcPairs = []
    suite.caseResults.each() { tc ->  
        Date execDate = format.parse(tc.starttime)
        execDateTcPairs << [execDate, tc]
    }
    //按執行日期、顯示名稱進行排序
    execDateTcPairs = execDateTcPairs.sort{ a,b -> a[1].displayName <=> b[1].displayName }
    execDateTcPairs = execDateTcPairs.sort{ a,b -> a[0] <=> b[0] }
    execDateTcPairs.each() {
        def execDate = it[0]
        def tc = it[1]  
%>
                    <tr>  
                        <td colspan="2" class="case"><%= tc.displayName %></td>  
                        <td class="case"><b><span style="color:<%= tc.isPassed() ? "#66CC00" : "#FF3333" %>"><%= tc.isPassed() ? "PASS" : "FAIL" %></span></b></td>  
                        <!-- <td class="case"><%= tc.getDuration().intdiv(60000)+"分"+(tc.getDuration()-tc.getDuration().intdiv(60000)*60000).intdiv(1000)+"秒" %></td>  -->
                        <!-- 將這里的運行持續時間修改為該用例的第一個tag,也就是作者 -->
                        <td class="case"><%= tc.tags[0] %></td>
                    </tr>  
        
<%
        if(tc.errorMsg != null) {
%>
                    <tr>
                        <td class="error"><b><span>錯誤描述:</span></b></td>
                        <td class="error" colspan="3"><span><%= tc.errorMsg%></span></td>
                    </tr>
<%                }%>
<%  
            } // tests  
        } // suites 
%>  
                </tboday>
            </table>
        </div>
<%  
    } // robot results  
}  
    if (!robotResults){ 
%> 
    <p>No Robot Framework test results found.</p>  
<%}%>
</body>
</html>

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM