《手把手教你》系列基础篇(八十三)-java+selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)-
1.简介
其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下。报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果、失败点和失败原因。另一方面,日志记录对于密切关注执行流程或在出现任何故障时进行调试很重要。默认情况下,TestNG 会为其测试执行生成不同类型的报告。这包括一个 HTML 和一个 XML 报告输出。TestNG 还允许其用户编写自己的报告程序并将其与 TestNG 一起使用。还有一个选项可以编写自己的记录器,TestNG 在运行时会通知这些记录器。
本篇文章宏哥主要是将通过一个示例介绍编写自定义报告器并将其附加到 TestNG 的方法。要编写自定义报告器类,我们的扩展类应该实现 IReporter 接口。让我们继续使用自定义报告器创建一个示例。
2.使用 TestNG 生成报告的方法
(1)Listeners− 为了实现监听器类,该类必须实现域名tListener接口。当测试开始、完成、失败、跳过或通过时,TestNG 在运行时通知这些类。
(2)IReporters− 为了实现一个报告类,该类必须实现一个域名orter接口。当整个套件运行结束时调用这些类。包含整个测试运行信息的对象在调用时传递给这个类。
3.自定义报告器
3.1创建测试用例类
1.按照宏哥前边的方法,创建一个TestNG类,并命名为:TestReport。这里宏哥直接沿用上一篇文章中的测试类。如下图所示:
2.然后进行脚本编辑,前面的测试类包含三个测试方法,其中testMethodOne和testMethodThree将在执行时通过,而testMethodTwo通过将false布尔值传递给 域名rtTrue 方法而失败,该方法用于测试中的真值条件。代码设计如下图所示:
3.参考代码如下:
package library; import 域名rt; import 域名域名; /** * @author 北京-宏哥 * * @公众号:北京宏哥 * * 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程) * * 2022年3月10日 */ public class TestReport { @Test public void testMethodOne() { 域名rtTrue(true); } @Test public void testMethodTwo() { 域名rtTrue(false); } @Test(dependsOnMethods = { "testMethodTwo" }) public void testMethodThree() { 域名rtTrue(true); } }
3.2创建自定义报告类
1.在 F:/workspace/Bjhg_Selenium/src/library中创建另一个命名为的新类 域名 ,如下图所示:
2.代码设计如下图所示:
前面的类实现了域名orter接口。它实现该方法的定义generateReport中的IReporter接口。该方法需要三个参数
① xmlSuite,这是正在执行的 testng XML 中提到的套件列表。
② suites,其中包含测试执行后的套件信息。该对象包含有关包、类、测试方法及其测试执行结果的所有信息。
③ outputDirectory,其中包含将生成报告的输出文件夹路径的信息。
3.参考代码如下:
package library; import 域名; import 域名; import 域名orter; import 域名te; import 域名teResult; import 域名tContext; import 域名.XmlSuite; /** * @author 北京-宏哥 * * @公众号:北京宏哥 * * 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程) * * 2022年3月11日 */ 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 = 域名ame(); //Getting the results for the said suite Map<String, ISuiteResult> suiteResults = 域名esults(); for (ISuiteResult sr : 域名es()) { ITestContext tc = 域名estContext(); 域名tln("Passed tests for suite \'" + suiteName + "\' is:" + 域名assedTests().getAllResults().size()); 域名tln("Failed tests for suite \'" + suiteName + "\' is:" + 域名ailedTests().getAllResults().size()); 域名tln("Skipped tests for suite \'" + suiteName + "\' is:" + 域名kippedTests().getAllResults().size()); } } } }
3.3创建域名
1.在F:/workspace/Bjhg_Selenium/src中创建 域名 执行测试用例。如下图所示:
2.参考XML文件内容如下:
<?xml version = "1.0" encoding = "UTF-8"?> <suite name = "Simple Reporter Suite"> <listeners> <listener class-name = "域名omReporter" /> </listeners> <test name = "Simple Reporter test"> <classes> <class name = "域名Report" /> </classes> </test> </suite>
3.4运行代码
1.选中域名文件,右键Run AS点击Test Suit运行。如下图所示:
2.控制台输出,如下图所示:
4.小结
前面的示例显示了一个简单的自定义报告器,它在控制台上为包含在所述测试执行中的每个套件打印失败、通过和跳过的测试数量。Reporter 主要用于生成测试执行的最终报告。该扩展程序可用于根据报告要求生成 XML、HTML、XLS、CSV 或文本格式文件。