自定义报道(Custom Reporter)
优质
小牛编辑
134浏览
2023-12-01
在本节中,我们将通过一个示例介绍编写自定义报告者并将其附加到TestNG的方法。 要编写自定义报告者类,我们的扩展类应该实现IReporter接口。 让我们继续并使用自定义报告器创建一个示例。
创建测试用例类 (Create Test Case Class)
在C:\》 TestNG_WORKSPACE创建一个java类,比如SampleTest.java 。
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);
}
}
前面的测试类包含三个测试方法, testMethodOne和testMethodThree将在执行时传递,而testMethodTwo通过将false布尔值传递给Assert.assertTrue方法而失败,该方法用于测试中的真值条件。
创建自定义报告类
在C:\》 TestNG_WORKSPACE创建另一个名为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接口的IReporter方法的定义。 该方法有三个参数 -
xmlSuite ,它是正在执行的testng XML中提到的套件列表。
suites ,包含测试执行后的套件信息。 此对象包含有关包,类,测试方法及其测试执行结果的所有信息。
outputDirectory ,包含将生成报告的输出文件夹路径的信息。
Create testng.xml
在C:\》 TestNG_WORKSPACE创建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类。
C:\TestNG_WORKSPACE>javac CustomReporter.java SampleTest.java
现在,运行testng.xml。
C:\TestNG_WORKSPACE>java -cp "C:\TestNG_WORKSPACE" 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
前面的示例显示了一个简单的自定义报告器,它在控制台上为所述测试执行中包含的每个套件打印失败,传递和跳过测试的数量。 Reporter主要用于生成测试执行的最终报告。 该扩展可用于生成XML,HTML,XLS,CSV或文本格式文件,具体取决于报表要求。