Can we integrate Extent reports with Qmetry Automation Framework(QAF)?

huangapple go评论111阅读模式
英文:

Can we integrate Extent reports with Qmetry Automation Framework(QAF)?

问题

我们能否将Extent报告(特别是使用适配器、TestNG或Cucumber)集成到Qmetry自动化框架(QAF)中?如果可以,请提供步骤。
从我的端来看,我尝试了这里提到的内容:http://extentreports.com/docs/versions/4/java/testng.html
但我没有看到生成任何报告。

英文:

Can we integrate Extent reports(specifically using Adapters, TestNG or Cucumber)with Qmetry Automation Framework(QAF)? If Yes, please provide the steps.
From my end, I tried what is mentioned here: http://extentreports.com/docs/versions/4/java/testng.html
And I am not seeing any reports being generated.

答案1

得分: 1

你的问题的答案是:是的。

在Qmetry Automation Framework(QAF)中,我们可以集成Extent报告。

我会在我的下一个更新中提供具体的操作步骤。

编辑/更新:
创建一个如下的类:

  1. public class ExtentReporter implements IReporter {
  2. private ExtentReports extent;
  3. @Override
  4. public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites, String outputDirectory) {
  5. extent = new ExtentReports(System.getProperty("user.dir") + "/ExtentReport.html", true);
  6. for (ISuite suite : suites) {
  7. Map<String, ISuiteResult> result = suite.getResults();
  8. for (ISuiteResult r : result.values()) {
  9. ITestContext context = r.getTestContext();
  10. try {
  11. buildTestNodes(context.getPassedTests(), LogStatus.PASS);
  12. buildTestNodes(context.getFailedTests(), LogStatus.FAIL);
  13. buildTestNodes(context.getSkippedTests(), LogStatus.SKIP);
  14. } catch (IOException e) {
  15. e.printStackTrace();
  16. }
  17. }
  18. }
  19. extent.flush();
  20. extent.close();
  21. }
  22. private void buildTestNodes(IResultMap tests, LogStatus status) throws IOException {
  23. ExtentTest test;
  24. if (tests.size() > 0) {
  25. for (ITestResult result : tests.getAllResults()) {
  26. test = extent.startTest(result.getMethod().getMethodName());
  27. test.getTest().setStartedTime(getTime(result.getStartMillis()));
  28. test.getTest().setEndedTime(getTime(result.getEndMillis()));
  29. for (String group : result.getMethod().getGroups())
  30. test.assignCategory(group);
  31. String message = "Test " + status.toString().toLowerCase() + "ed";
  32. if (result.getThrowable() != null)
  33. message = result.getThrowable().getMessage();
  34. test.log(status, message);
  35. extent.endTest(test);
  36. }
  37. }
  38. }
  39. private Date getTime(long millis) {
  40. Calendar calendar = Calendar.getInstance();
  41. calendar.setTimeInMillis(millis);
  42. return calendar.getTime();
  43. }
  44. }

在运行测试套件或者 .xml 文件时,将上述类添加为监听器。

  1. <listeners>
  2. <listener class-name="YOUR.LOCATION.ExtentReporter" />
  3. </listeners>
英文:

Answer to your question is : YES.
In Qmetry Automation Framework(QAF) we can integrate Extent reports.

I'll provide the HOW TO steps in my next update.

Edit / Update:
Create a class as below:

  1. public class ExtentReporter implements IReporter {
  2. private ExtentReports extent;
  3. @Override
  4. public void generateReport(List&lt;XmlSuite&gt; xmlSuites, List&lt;ISuite&gt; suites, String outputDirectory) {
  5. extent = new ExtentReports(System.getProperty(&quot;user.dir&quot;)+&quot;/ExtentReport.html&quot;, true);
  6. for (ISuite suite : suites) {
  7. Map&lt;String, ISuiteResult&gt; result = suite.getResults();
  8. for (ISuiteResult r : result.values()) {
  9. ITestContext context = r.getTestContext();
  10. try {
  11. buildTestNodes(context.getPassedTests(), LogStatus.PASS);
  12. buildTestNodes(context.getFailedTests(), LogStatus.FAIL);
  13. buildTestNodes(context.getSkippedTests(), LogStatus.SKIP);
  14. } catch (IOException e) {
  15. e.printStackTrace();
  16. }
  17. }
  18. }
  19. extent.flush();
  20. extent.close();
  21. }
  22. private void buildTestNodes(IResultMap tests, LogStatus status) throws IOException {
  23. ExtentTest test;
  24. if (tests.size() &gt; 0) {
  25. for (ITestResult result : tests.getAllResults()) {
  26. test = extent.startTest(result.getMethod().getMethodName());
  27. test.getTest().setStartedTime(getTime(result.getStartMillis()));
  28. test.getTest().setEndedTime(getTime(result.getEndMillis()));
  29. for (String group : result.getMethod().getGroups())
  30. test.assignCategory(group);
  31. String message = &quot;Test &quot; + status.toString().toLowerCase() + &quot;ed&quot;;
  32. if (result.getThrowable() != null)
  33. message = result.getThrowable().getMessage();
  34. test.log(status, message);
  35. extent.endTest(test);
  36. }
  37. }
  38. }
  39. private Date getTime(long millis) {
  40. Calendar calendar = Calendar.getInstance();
  41. calendar.setTimeInMillis(millis);
  42. return calendar.getTime();
  43. }

}

While running you suite or .xml file, add the above class as listener.

  1. &lt;listeners&gt;
  2. &lt;listener class-name=&quot;YOUR.LOCATION.ExtentReporter&quot; /&gt;
  3. &lt;/listeners&gt;

huangapple
  • 本文由 发表于 2020年5月29日 17:49:51
  • 转载请务必保留本文链接:https://go.coder-hub.com/62083148.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定