使用浏览器名称针对方法名称创建自定义testng html报告

时间:2017-01-10 06:02:05

标签: report testng

我正在进行跨浏览器测试,多个类中的每个测试方法都在4个浏览器Chrome,Firefox,IE,Safari上运行。

testng HTML报告&生成的范围报告在列中具有测试方法,但我还需要针对每种测试方法的浏览器名称。

即使testng HTML报告具有针对测试方法的浏览器名称也会很棒。

我发现了这个link,但我只需要方法列旁边的浏览器列到链接中的自定义报告

2 个答案:

答案 0 :(得分:0)

你可以像here那样做。但最好使用报告功能,例如您可以传递任何测试名称和说明以报告see docs

答案 1 :(得分:0)

您可以通过创建自定义TestHTMLReporter来实现。传递CustomReport.java课程中的所有数据,并生成您自己的报告,如下所示。我还解释了它here

使用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,也可以搜索解决方案。希望这有帮助