TestNG - 自定义报表



在本节中,我们将通过示例介绍编写自定义报表并将其附加到TestNG的方法。要编写自定义报表类,我们的扩展类应该实现IReporter接口。让我们创建一个包含自定义报表的示例。

创建测试用例类

创建一个Java类,例如,SampleTest.java/work/testng/src目录下。

import org.testng.Assert;
import org.testng.annotations.Test;

public class SampleTest {
   @Test
   public void testMethodOne() {
      Assert.assertTrue(true);
   }

   @Test
   public void testMethodTwo() {
      Assert.assertTrue(false);
   }

   @Test(dependsOnMethods = {"testMethodTwo"})
   public void testMethodThree() {
      Assert.assertTrue(true);
   }
}

上述测试类包含三个测试方法,其中testMethodOnetestMethodThree执行时将通过,而testMethodTwo通过向Assert.assertTrue方法(用于测试中的真值条件)传递一个false布尔值使其失败。

创建自定义报表类

/work/testng/src目录下创建另一个名为CustomReporter.java的新类。

import java.util.List;
import java.util.Map;

import org.testng.IReporter;
import org.testng.ISuite;
import org.testng.ISuiteResult;
import org.testng.ITestContext;
import org.testng.xml.XmlSuite;

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

      //Iterating over each suite included in the test
      for (ISuite suite : suites) {

         //Following code gets the suite name
         String suiteName = suite.getName();

         //Getting the results for the said suite
         Map<String, ISuiteResult> suiteResults = suite.getResults();
         for (ISuiteResult sr : suiteResults.values()) {
            ITestContext tc = sr.getTestContext();
            System.out.println("Passed tests for suite '" + suiteName +
               "' is:" + tc.getPassedTests().getAllResults().size());
            System.out.println("Failed tests for suite '" + suiteName +
               "' is:" + tc.getFailedTests().getAllResults().size());
            System.out.println("Skipped tests for suite '" + suiteName +
               "' is:" + tc.getSkippedTests().getAllResults().size());
         }
      }
   }
}

上述类实现了org.testng.IReporter接口。它实现了IReporter接口中generateReport方法的定义。该方法接受三个参数:

  • xmlSuite,这是正在执行的testng XML文件中提到的套件列表。

  • suites,包含测试执行后的套件信息。此对象包含关于包、类、测试方法及其测试执行结果的所有信息。

  • outputDirectory,包含报表生成位置的输出文件夹路径信息。

创建testng.xml

/work/testng/src目录下创建testng.xml来执行测试用例。

<?xml version = "1.0" encoding = "UTF-8"?>
<suite name = "Simple Reporter Suite">
   <listeners>
      <listener class-name = "CustomReporter" />
   </listeners>

   <test name = "Simple Reporter test">
      <classes>
         <class name = "SampleTest" />
      </classes>
   </test>
</suite>

使用javac编译SampleTest和CustomReporter类。

/work/testng/src$ javac CustomReporter.java SampleTest.java

现在,运行testng.xml。

/work/testng/src$ java org.testng.TestNG testng.xml

验证输出。

===============================================
Simple Reporter Suite
Total tests run: 3, Failures: 1, Skips: 1
===============================================

Passed tests for suite 'Simple Reporter Suite' is:1
Failed tests for suite 'Simple Reporter Suite' is:1
Skipped tests for suite 'Simple Reporter Suite' is:1

上述示例显示了一个简单的自定义报表,它为测试执行中包含的每个套件在控制台上打印失败、通过和跳过的测试数量。报表主要用于生成测试执行的最终报告。扩展可以根据报表要求生成XML、HTML、XLS、CSV或文本格式的文件。

testng_test_results.htm
广告