背景

搞过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内容,因此报告看起来好看又人性化

 

 

转载于:https://www.cnblogs.com/jwentest/p/7073223.html

Logo

开放原子开发者工作坊旨在鼓励更多人参与开源活动,与志同道合的开发者们相互交流开发经验、分享开发心得、获取前沿技术趋势。工作坊有多种形式的开发者活动,如meetup、训练营等,主打技术交流,干货满满,真诚地邀请各位开发者共同参与!

更多推荐