《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
1.简介
TestNG为日志记录和报告提供的不同选项。现在,宏哥讲解分享如何开始使用它们。首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录。
2.TestNG自定义日志
2.1创建测试用例类
1.按照宏哥前边的方法,创建一个TestNG类,并命名为:TestLog。这里宏哥直接沿用上一篇文章中的测试类。如下图所示:
2.然后进行脚本编辑,前面的测试类包含三个测试方法,其中OpenBrowser和LogOut将在执行时通过,而SignIn通过将false布尔值传递给 Assert.assertTrue 方法而失败,该方法用于测试中的真值条件。代码设计如下图所示:
3.参考代码如下:
package library; import org.testng.Assert;
import org.testng.Reporter;
import org.testng.annotations.Test; /**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
*《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG日志(详解教程)
*
* 2022年3月17日
*/ public class TestLog { @Test
public void OpenBrowser() {
Assert.assertTrue(true);
System.out.println("OpenBrowser被调用!");
Reporter.log("调用打开浏览器的方法!");
} @Test(dependsOnMethods = {"OpenBrowser"})
public void SignIn() {
Assert.assertTrue(false);
System.out.println("SignIn方法被调用!");
Reporter.log("调用登录方法!");
} @Test(dependsOnMethods = {"SignIn"})
public void LogOut() {
Assert.assertTrue(true);
System.out.println("LogOut方法被调用!");
Reporter.log("调用注销方法!");
} }
2.2创建自定义日志类
1.在 F:/workspace/Bjhg_Selenium/src/library中创建另一个命名为的新类 CustomReporter.java ,如下图所示:
2.代码设计如下图所示:
上面的类扩展了TestListenerAdapter,它使用空方法实现了ITestListener。因此,无需从接口覆盖其他方法。如果您愿意,您可以直接实现该接口。
3.参考代码如下:
package library; import org.testng.ITestResult;
import org.testng.TestListenerAdapter; /**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
*《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG日志(详解教程)
*
* 2022年3月17日
*/ public class CustomListener extends TestListenerAdapter {
private int m_count = 0; @Override
public void onTestFailure(ITestResult tr) {
log(tr.getName() + "--Test method failed\n");
} @Override
public void onTestSkipped(ITestResult tr) {
log(tr.getName() + "--Test method skipped\n");
} @Override
public void onTestSuccess(ITestResult tr) {
log(tr.getName() + "--Test method success\n");
} private void log(String string) {
System.out.print(string);
if (++m_count % 40 == 0) {
System.out.println("");
}
}
}
2.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.CustomListener" />
</listeners>
<test name = "Simple Reporter test" >
<classes>
<class name = "library.TestLog" />
</classes>
</test>
</suite>
2.4运行代码
1.选中testng.xml文件,右键Run AS点击Test Suit运行。如下图所示:
2.控制台输出,如下图所示:
2.5查看测试报告中日志
3.小结
我们创建了一个自定义记录器类,它实现了 ITestListener 接口并将其作为一个监听器附加到 TestNG 测试套件中。这个侦听器类的方法在测试开始、测试失败、测试成功等时由 TestNG 调用。可以实现多个侦听器并将其添加到测试套件执行中,TestNG 将调用附加到测试套件的所有侦听器。
《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)的更多相关文章
- 《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)
1.简介 上一篇宏哥介绍是如何使用logback将日志输出到控制台中,但是如果需要发给相关人需要你拷贝出来,有时候由于控制台窗口的限制,有部分日志将会无法查看,因此我们还是需要将日志输出到文件中,因此 ...
- 《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)
1.简介 经过前边几篇知识点的介绍,今天宏哥就在实际测试中应用一下前边所学的依赖测试.这一篇主要介绍在TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用de ...
- 《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
1.简介 页面对象模型(Page Object Model)在Selenium Webdriver自动化测试中使用非常流行和受欢迎,作为自动化测试工程师应该至少听说过POM这个概念.本篇介绍POM的简 ...
- 《手把手教你》系列基础篇(七十六)-java+ selenium自动化测试-框架设计基础-TestNG实现DDT - 下篇(详解教程)
1.简介 今天这一篇宏哥主要是结合实际工作中将遇到的测试场景和前边两篇学习的知识结合起来给大家讲解和分享一下,希望以后大家在以后遇到其他的测试场景也可以将自己的所学的知识应用到测试场景中. 2.测试场 ...
- 《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)
1.简介 在实际测试过程中,我们经常会遇到这样的情况,开发由于某些原因导致一些模块进度延后,而你的自动化测试脚本已经提前完成,这样就会有部分模块测试,有部分模块不能进行测试.这就需要我们暂时不让一些t ...
- 《手把手教你》系列基础篇(八十三)-java+ selenium自动化测试-框架设计基础-TestNG测试报告-下篇(详解教程)
1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对 ...
- 《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)
1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包 ...
- 《手把手教你》系列基础篇(七十七)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 上篇(详解教程)
1.简介 今天主要是讲解和分享:TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用dependsOnMethods,testNG会自动根据@Test方法名称 ...
- 《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程)
1.简介 TestNG还为我们提供了测试的记录功能-日志.例如,在运行测试用例期间,用户希望在控制台中记录一些信息.信息可以是任何细节取决于目的.牢记我们正在使用Selenium进行测试,我们需要有助 ...
随机推荐
- libx264开发笔记(一):libx264介绍、海思平台移植编译
前言 在编译ffmpeg时,使用到h264编码时是需要依赖libx264的,本文章是将将libx264作为静态库移植到海思上. 相关博客 <Qt开发笔记之编码x264码流并封装mp4(一 ...
- kubernetes集群节点多网卡,calico指定网卡
kubernetes集群节点多网卡,calico指定网卡 1.calico如果有节点是多网卡,所以需要在配置文件中指定内网网卡 spec: containers: - env: - name: DAT ...
- 解决使用DBeaver连接MySQL时报错-The server time zone value '�й���ʱ��' is unrecognized or represents more than one time zone.
解决使用DBeaver连接MySQL时报错,其实提示很明显. The server time zone value '�й���ʱ��' is unrecognized or represents ...
- [转载]从phpinfo中能获取哪些敏感信息
phpinfo()想必的最熟悉的了,在搭建环境之后都会随后写一个 phpinfo()来测试环境是否正常,很多人测试完毕忘记删除就开始部署环境了,这就造成了一些敏感信息的泄漏.那么我们能从 phpinf ...
- C# XML基础入门(XML文件内容增删改查清)
前言: 最近对接了一个第三方的项目,该项目的数据传输格式是XML.由于工作多年只有之前在医疗行业的时候有接触过少量数据格式是XML的接口,之后就几乎没有接触过了.因此对于XML这块自己感觉还是有很多盲 ...
- Vue中图片的加载方式
一.前言 VUE项目中图片的加载是必须的,那么vue中图片的加载方式有哪些呢,今天博主就抽点时间来为大家大概地捋一捋. 二.图片的加载方法 1.在本地加载图片(静态加载) 图片存放assets文件夹中 ...
- JavaScript 的诞生历史
看到一篇介绍JS诞生历史的文章,很有意思,文章里描述了很多的历史细节 https://webdevelopmenthistory.com/1995-the-birth-of-javascript/
- -std=c++11 编译器设置
range-based 'for' loops are not allowed in C++98 mode
- springboot服务引入外部jar包在windows运行正常,在linux环境上无法加载到引入jar包的类
一.问题描述 最近开发了一个springboot程序,需要依赖第三方jar包,这个jar包无法直接通过pom远程仓库下载,需要从自己本地引入,于是配置pom文件如下:将本地jar包引入工程,syste ...
- mybatis中jdbcType和javaType
1.MyBatis 通过包含的jdbcType类型 BIT.FLOAT.CHAR .TIMESTAMP . OTHER .UNDEFINEDTINYINT .REAL .VARCHAR .BINARY ...