优化testng报告

发表于:2017-7-24 11:48

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:whendream    来源:博客

  背景
  搞过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内容,因此报告看起来好看又人性化
《2023软件测试行业现状调查报告》独家发布~

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号