How to Adding ExtendReport in test framework

Posted amy2012

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了How to Adding ExtendReport in test framework相关的知识,希望对你有一定的参考价值。

Step 1: Add the extentreport dependency in POM.xml

<dependency>
    <groupId>com.aventstack</groupId>
    <artifactId>extentreports</artifactId>
    <version>3.1.5</version>
</dependency>

Step2: Prepare a ExtentReportListener which implents IReporter.  below is an example.

  1 public class ExtentReportListener implements IReporter 
  2 
  3     private static final String OUTPUT_FOLDER = "target/";
  4     private static final String FILE_NAME = "ExtentReport.html";
  5 
  6     private ExtentReports extent;
  7 
  8 
  9     @Override
 10     public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) 
 11         init(xmlSuites);
 12 
 13         for (ISuite suite : suites) 
 14             Map<String, ISuiteResult> result = suite.getResults();
 15 
 16             for (ISuiteResult r : result.values()) 
 17                 ITestContext context = r.getTestContext();
 18 
 19                 buildTestNodes(context.getFailedTests(), Status.FAIL);
 20                 buildTestNodes(context.getSkippedTests(), Status.SKIP);
 21                 buildTestNodes(context.getPassedTests(), Status.PASS);
 22 
 23             
 24         
 25 
 26         for (String s : Reporter.getOutput()) 
 27             extent.setTestRunnerOutput(s);
 28         
 29 
 30         extent.flush();
 31     
 32 
 33 
 34     private void init(List<XmlSuite> xmlSuites) 
 35         String suiteName = xmlSuites.get(0).getName();
 36         ExtentHtmlReporter htmlReporter = new ExtentHtmlReporter(OUTPUT_FOLDER + FILE_NAME);
 37         htmlReporter.config().setDocumentTitle("ExtentReports: " + suiteName);
 38         htmlReporter.config().setReportName(suiteName);
 39         htmlReporter.config().setTestViewChartLocation(ChartLocation.TOP);
 40         htmlReporter.config().setTheme(Theme.STANDARD);
 41         htmlReporter.config().setChartVisibilityOnOpen(true);
 42         htmlReporter.config().setEncoding("utf-8");
 43         //Fix the report with css stype
 44         htmlReporter.config().setResourceCDN(ResourceCDN.EXTENTREPORTS);
 45 
 46         extent = new ExtentReports();
 47         extent.attachReporter(htmlReporter);
 48         extent.setReportUsesManualConfiguration(true);
 49     
 50 
 51 
 52     private void buildTestNodes(IResultMap tests, Status status) 
 53         // IResultMap is not sorted. To make it look nice in report first we need to sort tests (sort by start time)
 54         SortedSet<ITestResult> sortedSet = new TreeSet<>();
 55         for (ITestResult result : tests.getAllResults()) 
 56             sortedSet.add(result);
 57         
 58 
 59         // Now we go through sorted results
 60         ExtentTest test;
 61         if (tests.size() > 0) 
 62             for (ITestResult result : sortedSet) 
 63                 test = extent.createTest(result.getTestContext().getCurrentXmlTest().getName() + " - "
 64                         + result.getMethod().getMethodName());
 65 
 66                 // Using Class short name instead of category
 67                 test.assignCategory(result.getMethod().getRealClass().getSimpleName());
 68 
 69                 Throwable throwable = result.getThrowable();
 70 
 71                 if (throwable != null) 
 72 
 73                     // Add parameters
 74                     Object[] parameters = result.getParameters();
 75                     if (parameters.length > 0) 
 76                         try 
 77                             // If parameters are String
 78                             String params = "";
 79                             for (Object object : parameters) 
 80                                 if (params.isEmpty()) 
 81                                     params = (String) object;
 82                                  else 
 83                                     params = params + "," + (String) object;
 84                                 
 85                             
 86                             test.info(params);
 87                          catch (ClassCastException e) 
 88                             // If parameters are HashMap
 89                             @SuppressWarnings("unchecked")
 90                             HashMap<String, String> table = (HashMap<String, String>) parameters[0];
 91                             test.info(table.toString());
 92                         
 93                      else 
 94                         test.info("This test doesn‘t have data");
 95                     
 96 
 97                     // Finally, log throwable
 98                     test.log(status, throwable);
 99 
100                  else 
101                     test.log(status, "Test " + status.toString().toLowerCase() + "ed");
102                 
103 
104                 test.getModel().setStartTime(getTime(result.getStartMillis()));
105                 test.getModel().setEndTime(getTime(result.getEndMillis()));
106             
107         
108     
109 
110 
111     private Date getTime(long millis) 
112         Calendar calendar = Calendar.getInstance();
113         calendar.setTimeInMillis(millis);
114         return calendar.getTime();
115     
116 

Step3: update the testng.xml to add the listener

<listeners>
  <listener class-name="ExtentReportListener" />
</listeners>

Step4: run the test suite and check the report with a browser.   

以上是关于How to Adding ExtendReport in test framework的主要内容,如果未能解决你的问题,请参考以下文章

Adding Hosts to Nagios

Adding user to dialout on Linux

ref:Adding AFL Bloom Filter to Domato for Fun

Adding a prefix header to an iOS project

[Redux] Adding React Router to the Project

Plai 5: Adding functions to languae