生成HTML TestNG报告

时间:2011-03-25 14:07:36

标签: testng

我想生成HTML testNG报告。默认情况下,我们在运行testNG后会有一个名为“emailable-reports”的报告文件。但现在我想创建自己的HTML报告。我试图使用ITestListener和ITestReport.But即使我重写那些方法它也没有做任何事情。我不知道如何以及在何处使用这些方法。我有两个测试用例。所以现在我必须把代码放到报告中......

4 个答案:

答案 0 :(得分:1)

根据documentationITestListener接口的实现是为实时报告而设计的,而IReporter接口的实现旨在在套件运行完成后生成报告。

实现IReporter和generateReport(List<ISuite> suites, String outputDirectory)方法的实例应该可以让您查看测试结果并创建HTML报告。

答案 1 :(得分:1)

@Feanor - 根据您的实施方案

################
  Implementing an instance of IReporter and the generateReport(List<ISuite> suites, String outputDirectory)
#################

我们这里有一个问题。 假设我们实现了Ireporter的实例说“CustomReporter”并覆盖generateReport,它通过在xml文件中添加监听器来调用

此testng之后还会调用EmailableReport,它也会实现Ireporter,它会恢复为默认的testNg报告

答案 2 :(得分:0)

您可以使用QAF生成json based reporting dashboard

答案 3 :(得分:0)

我知道这是一个旧帖子,但我已解释here如何自定义TestHTMLReporter,这里是:

使用customReport您必须实施IReporter,如果要实施自定义TestHTMLReporter,请展开TestListenerAdapter并覆盖generateReport方法。对于其他记者,您可能需要做一些不同的事情,但概念将保持不变。您将获得如下所示的自定义“TestHTMLReporter”。

在项目中创建CustomReport.java文件并复制粘贴TestHTMLReporter.java的全部内容,在getOutputFile方法中更改文件名称,如下所示

public class CustomReport  extends TestListenerAdapter implements IReporter {

     @Override
        public void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,
                                   String outputDirectory) {

        }
   ...
   //paste the content of TestHTMLReporter.java here
   ...
   ...

确保所有导入都来自TestHTMLReporter.java 现在,在此文件中根据您的要求进行更改。例如:如果您想添加每个测试的结束时间,请在generateTable方法的正确位置添加以下代码段

// Test class
      String testClass = tr.getTestClass().getName();
       long testMillis = tr.getEndMillis();
        String testMillisString = Long.toString(testMillis);
      if (testClass != null) {
        pw.append("<br>").append("Test class Name: ").append(testClass);

         // this line to add end time in ms
        pw.append("<br>").append("End Time(ms): ").append(testMillisString); 
        // Test name
        String testName = tr.getTestName();
        if (testName != null) {
          pw.append(" (").append(testName).append(")");

        }   

然后你会得到如下

enter image description here

现在,您将获得两个报告,一个是默认报告,另一个报告是您的文件名。 现在唯一剩下的就是关闭默认的报告监听器,因此您只能获得一个报告。为此,您可以关注this,也可以搜索解决方案。希望这有帮助