【问题标题】:Generating HTML TestNG reports生成 HTML TestNG 报告
【发布时间】:2017-11-30 01:55:30
【问题描述】:

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

【问题讨论】:

    标签: testng


    【解决方案1】:

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

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

    【讨论】:

    • 你能给我一些例子来生成报告吗?因为我尝试生成报告,但出现错误。
    • @Kalpana:请在上面的问题中添加有关您遇到的错误的更多详细信息,以便我们知道如何提供帮助。
    【解决方案2】:

    @Feanor - 根据您的实施

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

    我们这里有问题。 假设我们已经实现为 Ireporter 的实例说“CustomReporter”并覆盖通过在 xml 文件中添加侦听器来调用的 generateReport

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

    【讨论】:

      【解决方案3】:

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

      【讨论】:

        【解决方案4】:

        我知道这是一个旧线程,但我已经解释了here 如何自定义TestHTMLReporter,这里是:

        使用您的 customReport 您必须实现 IReporter ,扩展 TestListenerAdapter 并覆盖 generateReport 方法,如果您想实现自定义 TestHTMLReporter 。对于其他记者,您可能需要做一些不同的事情,但概念将保持不变。您将实现如下所示的自定义“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 方法中的正确位置添加以下 sn-p

        // 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(")");
        
                }   
        

        然后你会得到如下所示

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

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2015-07-12
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多