優化testng報告


背景

搞過testng的同學都知道,testng自帶的報告非常丑,而且有些字段的展示很不人性化,所以需要優化下報告

 

 

 

解決方案

嘗試過一下開源的jar包,如ReportNG,奈何和目前使用的allure框架沖突,只能選擇其他方法,google后發現可以重寫testNG的生成報告的接口來實現自定義的報告,美化方面想到了直接套用bootstrap的框架

參考:https://stackoverflow.com/questions/19564862/customizing-summary-section-of-testng-emailable-report

          http://www.bootcss.com/

 

 首先嘗試獲取我們需要的關鍵信息,可以獲取到我們想要的用例數量,通過個數,失敗個數,跳過個數,類名,方法名,異常報錯,時間

for  (ISuite suite : suites) {
             Map<String, ISuiteResult> tests = suite.getResults();
             for  (ISuiteResult r : tests.values()) {
                 ITestContext overview = r.getTestContext();
                 System.err.println( "suite: "  + overview.getName());
                 System.err.println( "Stard Time: " +overview.getStartDate());
                 System.err.println( "End Time: " +overview.getEndDate());
 
                 System.err.println( "all methods num : " +overview.getAllTestMethods().length);
                 
                 //passed
                 System.err.println( "passed: "  + overview.getPassedTests().size());
                 Set<ITestResult> passedSet = overview.getPassedTests().getAllResults();
                 for (ITestResult p : passedSet){
                     System.err.println( "class: "  +p.getTestClass().getName() +  " | method: " +p.getName());
                 }
 
                 //failed
                 System.err.println( "failed: "  + overview.getFailedTests().size());
                 Set<ITestResult> failedSet = overview.getFailedTests().getAllResults();
                 for (ITestResult f : failedSet){
                     System.err.println( "class: "  +f.getTestClass().getName()+  " | method: " +f.getName() +  " | error: " + f.getThrowable());
                 }
                 
                 //skipped
                 System.err.println( "skipped: "  + overview.getSkippedTests().size());
                 Set<ITestResult> skippedSet = overview.getSkippedTests().getAllResults();
                 for (ITestResult s : skippedSet){
                     System.err.println( "---- "  +s.getName() );
                     System.err.println(s.getThrowable());
                 }
                 System.err.println( "==================================" );
             }
             
         }

然后將獲取到的數據寫到一個html文件中,css樣式采用放在html中, 類似下圖

 

生成的html文件中包含了我們期望的數據,和bootstrap的css內容,因此報告看起來好看又人性化

 

 


免責聲明!

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



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