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 user to dialout on Linux
ref:Adding AFL Bloom Filter to Domato for Fun
Adding a prefix header to an iOS project