Dataprovider如何将测试数据发布到HTML报告中

时间:2017-11-15 14:23:05

标签: testng testng-dataprovider

我只是用Google搜索,但没有想到dataprovider如何将测试数据发布到默认的TestNG报告中。如果有任何关于数据提供者内部逻辑的专家请告诉我。如果有任何文件可以更好地理解这一点,将不胜感激。

我刚创建了一个自定义注释,我希望将其发布到默认的testNG HTML报告中,就像DataProvider一样。到目前为止,我已尝试过以下代码。

以下类将创建注释:

     @Retention(RetentionPolicy.RUNTIME)
     @Target({ ElementType.METHOD })
     public @interface Greet {
        /**
         * @return - The name of the person to greet.
         */
        String name() default "";
}

以下课程将从用户处获取数据:

  public class TestCase1 {
    @Test
    @DataPublish(name="First Test method_1")
    public static void test1() throws Exception {
       try {
            Assert.assertTrue(true);
           } 
       catch (Exception ex) {
            ex.printStackTrace();
        }
    }

我想在testNG默认HTML报告中打印该注释值。

1 个答案:

答案 0 :(得分:1)

您的数据提供者可以向任何类或方法提供数据,我相信有这样的例子。您可以在下面的课程中添加数据。我已经解释了下面的自定义报告部分。

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