《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)

news/2025/2/14 2:48:00/

宏哥微信粉丝群:https://bbs.csdn.net/topics/618423372 有兴趣的可以扫码加入

1.简介

  其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下。报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果、失败点和失败原因。另一方面,日志记录对于密切关注执行流程或在出现任何故障时进行调试很重要。默认情况下,TestNG 会为其测试执行生成不同类型的报告。这包括一个 HTML 和一个 XML 报告输出。TestNG 还允许其用户编写自己的报告程序并将其与 TestNG 一起使用。还有一个选项可以编写自己的记录器,TestNG 在运行时会通知这些记录器。

  本篇文章宏哥主要是将通过一个示例介绍编写自定义报告器并将其附加到 TestNG 的方法。要编写自定义报告器类,我们的扩展类应该实现 IReporter 接口。让我们继续使用自定义报告器创建一个示例。

2.使用 TestNG 生成报告的方法

(1)Listeners− 为了实现监听器类,该类必须实现org.testng.ITestListener接口。当测试开始、完成、失败、跳过或通过时,TestNG 在运行时通知这些类。

(2)IReporters− 为了实现一个报告类,该类必须实现一个org.testng.IReporter接口。当整个套件运行结束时调用这些类。包含整个测试运行信息的对象在调用时传递给这个类。

3.自定义报告器

3.1创建测试用例类

1.按照宏哥前边的方法,创建一个TestNG类,并命名为:TestReport。这里宏哥直接沿用上一篇文章中的测试类。如下图所示:

2.然后进行脚本编辑,前面的测试类包含三个测试方法,其中testMethodOnetestMethodThree将在执行时通过,而testMethodTwo通过将false布尔值传递给 Assert.assertTrue 方法而失败,该方法用于测试中的真值条件。代码设计如下图所示:

3.参考代码如下:

package library;import org.testng.Assert;
import org.testng.annotations.Test;/*** @author 北京-宏哥* * @公众号:北京宏哥* * 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)** 2022年3月10日*/public class TestReport {@Testpublic void testMethodOne() {Assert.assertTrue(true);}@Testpublic void testMethodTwo() {Assert.assertTrue(false);}@Test(dependsOnMethods = { "testMethodTwo" })public void testMethodThree() {Assert.assertTrue(true);}
}
3.2创建自定义报告类

1.在 F:/workspace/Bjhg_Selenium/src/library中创建另一个命名为的新类 CustomReporter.java ,如下图所示:

2.代码设计如下图所示:

前面的类实现了org.testng.IReporter接口。它实现该方法的定义generateReport中的IReporter接口。该方法需要三个参数

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

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

③ outputDirectory,其中包含将生成报告的输出文件夹路径的信息。

3.参考代码如下:

package library;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;/*** @author 北京-宏哥* * @公众号:北京宏哥* * 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)** 2022年3月11日*/public class CustomReporter implements IReporter{@Overridepublic void generateReport(List<XmlSuite> xmlSuites, List<ISuite> suites,String outputDirectory) {//Iterating over each suite included in the testfor (ISuite suite : suites) {//Following code gets the suite nameString suiteName = suite.getName();//Getting the results for the said suiteMap<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());}}}
}
3.3创建testng.xml

1.在F:/workspace/Bjhg_Selenium/src中创建 testng.xml 执行测试用例。如下图所示:

2.参考XML文件内容如下:

<?xml version = "1.0" encoding = "UTF-8"?>
<suite name = "Simple Reporter Suite"><listeners><listener class-name = "library.CustomReporter" /></listeners><test name = "Simple Reporter test"><classes><class name = "library.TestReport" /></classes></test>
</suite>
3.4运行代码

1.选中testng.xml文件,右键Run AS点击Test Suit运行。如下图所示:

2.控制台输出,如下图所示:

4.小结

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

  每天学习一点,今后必成大神-

往期推荐(由于跳转参数丢失了,所有建议选中要访问的右键,在新标签页中打开链接即可访问)或者微信搜索: 北京宏哥  公众号提前解锁更多干货。

Appium自动化系列,耗时80天打造的从搭建环境到实际应用精品教程测试

Python接口自动化测试教程,熬夜87天整理出这一份上万字的超全学习指南

Python+Selenium自动化系列,通宵700天从无到有搭建一个自动化测试框架

Java+Selenium自动化系列,仿照Python趁热打铁呕心沥血317天搭建价值好几K的自动化测试框架

Jmeter工具从基础->进阶->高级,费时2年多整理出这一份全网超详细的入门到精通教程

Fiddler工具从基础->进阶->高级,费时100多天吐血整理出这一份全网超详细的入门到精通教程

Pycharm工具基础使用教程


http://www.ppmy.cn/news/1415660.html

相关文章

立方变自身 蓝桥杯 java

题目 观察下面的现象,某个数字的立方&#xff0c;按位累加仍然等于自身。 1^3 1 8^3 512 5128 17^3 4913 491317 … 请你计算包括1,8,17在内&#xff0c;符合这个性质的正整数一共有多少个&#xff1f; 请填写该数字&#xff0c;不要填写任何多余的内容或说明性的文字。 答…

Git入门实战教程之合并分支并解决冲突

在开发过程中&#xff0c;难免会遇到代码冲突的情况&#xff0c;那么该如何处理呢&#xff1f; 分支策略&#xff1a;首先master主分支应该是非常稳定的&#xff0c;也就是用来发布新版本&#xff0c;一般情况下不允许在上面干活&#xff0c;干活一般情况下在新建的dev分支上干…

代理与反向代理

Java项目的代理与反向代理 1. 代理 定位&#xff1a;为客户端服务通信方向&#xff1a;客户端->代理服务器->远程服务器好处&#xff1a;对客户端行为进行过滤和控制&#xff1b;隐藏客户端IP地址&#xff1b;审计流量&#xff1b;缓存资源加快访问速度&#xff1b; 2…

P1712 [NOI2016] 区间(线段树 + 贪心 + 双指针)

题目描述 在数轴上有 n 个闭区间从 1 至 n 编号&#xff0c;第 i 个闭区间为 [li​,ri​] 。 现在要从中选出 m 个区间&#xff0c;使得这 m 个区间共同包含至少一个位置。换句话说&#xff0c;就是使得存在一个 x &#xff0c;使得对于每一个被选中的区间 [li​,ri​]&#…

Faster RCNN训练自己的数据集【傻瓜式教程】

一、下载源码 本文采用的源码是&#xff1a;https://github.com/dBeker/Faster-RCNN-TensorFlow-Python3 二、配置环境 由于本文是小白教程&#xff0c;光写几个环境怕有人配置不好或者配置版本搞乱。Faster RCNN配置环境比较复杂。我在这直接贴图我的环境版本图&#xff1a…

Spring事务:7种传播方式、4种隔离级别

Spring事务的代码承接jdbcTemplate的 文章目录 一、事务1.1 注解配置1.2 注解处理事务1.3 xml处理事务配置 二、传播方式三、事务的隔离级别 一、事务 不可分割的一系列操作。要么 全执行成功。要么 如果一个不成功&#xff0c;则全部不成功。 处理的事务的时候&#xff0c;成…

深入探索MySQL:成本模型解析与查询性能优化

码到三十五 &#xff1a; 个人主页 在数据库管理系统中&#xff0c;查询优化器是一个至关重要的组件&#xff0c;它负责将用户提交的SQL查询转换为高效的执行计划。在MySQL中&#xff0c;查询优化器使用了一个称为“成本模型”的机制来评估不同执行计划的优劣&#xff0c;并选择…

实例解释遇到前端报错时如何排查问题

前端页面报错&#xff1a; 1、页面报错500&#xff0c;首先我们可以知道是服务端的问题&#xff0c;需要去看下服务端的报错信息&#xff1a; 2、首先我们查看下前端是否给后端传了id: 我们可以看到接口是把ID返回了&#xff0c;就需要再看下p_id是什么情况了。 3、我们再次请…