1.简介

  TestNG还为我们提供了测试的记录功能-日志。例如,在运行测试用例期间,用户希望在控制台中记录一些信息。信息可以是任何细节取决于目的。牢记我们正在使用Selenium进行测试,我们需要有助于用户理解测试步骤或测试用例执行期间的任何失败的信息。在TestNG Logs的帮助下,可以在Selenium测试用例执行期间启用日志记录。

  这一篇文章宏哥主要介绍利用TestNG中的Report类来实现简单的log输出,在TestNG中有一个Report的类,这个类的作用是,在添加了@Test的方法里面,通过Report.log("log message")这样的方式,给每个步骤添加日志解释,这些日志解释会显示在TestNG生成的html报告中。

2.两中模式记录

日志信息一般使用两中模式记录,即高层级和底层级。

(1)底层级模式日志会记录所有的测试步骤信息。在低级别日志记录中,您尝试为您执行的每个步骤或在自动化脚本中执行的每个操作生成日志。

(2)高层级模式日志只记录测试脚本中的主要时间信息。在高级别日志记录中,您只需尝试捕获测试的主要事件。

3.项目实战

好了,多的不说少的不唠,直接进入今天的主题-testng日志。

3.1测试场景

因为这一篇主要是讲解日志,所以宏哥在这里模拟一个测试场景:启动浏览器,登录到系统,然后退出系统。

3.2代码设计

3.3参考代码

package library;

import org.testng.Reporter;
import org.testng.annotations.Test; /**
* @author 北京-宏哥
*
* @公众号:北京宏哥
*
*《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志(详解教程)
*
* 2022年3月14日
*/ public class TestLog { @Test
public void OpenBrowser() {
System.out.println("OpenBrowser被调用!");
Reporter.log("调用打开浏览器的方法!");
} @Test(dependsOnMethods = {"OpenBrowser"})
public void SignIn() {
System.out.println("SignIn方法被调用!");
Reporter.log("调用登录方法!");
} @Test(dependsOnMethods = {"SignIn"})
public void LogOut() {
System.out.println("LogOut方法被调用!");
Reporter.log("调用注销方法!");
} }

3.4运行代码

1.运行代码,右键Run AS->TestNG Suite,控制台输出,如下图所示:

3.5查看日志

1.运行代码后,找到testng的index.htm测试报告,查看日志,如下图所示:

2.运行代码后,找到testng的emailable-report.html测试报告,查看日志,如下图所示:

3.从上图可以看到用Eclipse自带浏览器打开发现中文的日志消息会显示乱码,但是进入项目文件,用本地浏览器再次打开没有乱码,宏哥对比了上边两个文件的html代码,发现乱码的里边没有定义编码格式,可能是这个原因吧!

4.将定义编码格式的代码加入后,再次用Eclipse自带浏览器打开,没有乱码,如下图所示:

4.小结

细心地小伙伴后者童鞋们发现日志不是按我们的运行顺序显示。网上查了好多资料说是TestNg的jar包里生成日志的记录是按字母排序优先级来显示,需要修改jar包的源码,还有那个编码问题也需要修改源码。就是你修改源码后,再重新导出一个jar包,然后执行就可以了。

好了,今天时间不早了,今天宏哥就分享和讲解到这里,感谢您耐心地阅读!

《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程)的更多相关文章

  1. 《手把手教你》系列基础篇(八十)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试-番外篇(详解教程)

    1.简介 经过前边几篇知识点的介绍,今天宏哥就在实际测试中应用一下前边所学的依赖测试.这一篇主要介绍在TestNG中一个类中有多个测试方法的时候,多个测试方法的执行顺序或者依赖关系的问题.如果不用de ...

  2. 《手把手教你》系列基础篇(九十)-java+ selenium自动化测试-框架设计基础-Logback实现日志输出-中篇(详解教程)

    1.简介 上一篇宏哥介绍是如何使用logback将日志输出到控制台中,但是如果需要发给相关人需要你拷贝出来,有时候由于控制台窗口的限制,有部分日志将会无法查看,因此我们还是需要将日志输出到文件中,因此 ...

  3. 《手把手教你》系列基础篇(八十一)-java+ selenium自动化测试-框架设计基础-TestNG如何暂停执行一些case(详解教程)

    1.简介 在实际测试过程中,我们经常会遇到这样的情况,开发由于某些原因导致一些模块进度延后,而你的自动化测试脚本已经提前完成,这样就会有部分模块测试,有部分模块不能进行测试.这就需要我们暂时不让一些t ...

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

    1.简介 其实前边好像简单的提到过测试报告,宏哥觉得这部分比较重要,就着重讲解和介绍一下.报告是任何测试执行中最重要的部分,因为它可以帮助用户了解测试执行的结果.失败点和失败原因.另一方面,日志记录对 ...

  5. 《手把手教你》系列基础篇(五)-java+ selenium自动化测试- 创建首个自动化脚本(详细教程)

    1.简介 前面几篇宏哥介绍了两种(java和maven)环境搭建和三大浏览器的启动方法,这篇文章宏哥将要介绍第一个自动化测试脚本.前边环境都搭建成功了,浏览器也驱动成功了,那么我们不着急学习其他内容, ...

  6. 《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)

    1.简介 TestNG为日志记录和报告提供的不同选项.现在,宏哥讲解分享如何开始使用它们.首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录. 2.Test ...

  7. 《手把手教你》系列基础篇(七十八)-java+ selenium自动化测试-框架设计基础-TestNG依赖测试- 中篇(详解教程)

    1.简介 上一篇讲解了依赖测试的各种方法,今天继续讲解依赖测试的方法,这一篇主要是讲解和分享通过xml文件配置组名依赖方法( 主要是测试组的用法).废话不说,直接上干货. 2.实例 测试组:一个组可包 ...

  8. 《手把手教你》系列技巧篇(二十八)-java+ selenium自动化测试-处理模态对话框弹窗(详解教程)

    1.简介 在前边的文章中窗口句柄切换宏哥介绍了switchTo方法,这篇继续介绍switchTo中关于处理alert弹窗的问题.很多时候,我们进入一个网站,就会弹窗一个alert框,有些我们直接关闭, ...

  9. 《手把手教你》系列技巧篇(四十八)-java+ selenium自动化测试-判断元素是否可操作(详解教程)

    1.简介 webdriver有三种判断元素状态的方法,分别是isEnabled,isSelected 和 isDisplayed,其中isSelected在前面的内容中已经简单的介绍了,isSelec ...

随机推荐

  1. 【C#基础概念】Ineterface 接口的设计原则

    接口设计方式 自顶向下 (如图所示),自底向上(发现类需要结构了就声明一个接口). 接口的作用 用来解耦.继承 接口的本质

  2. 【C#特性】 Attribute 特性

    msdn:https://docs.microsoft.com/zh-cn/dotnet/csharp/programming-guide/concepts/attributes/creating-c ...

  3. System.Console.WriteLine() 调用原理

    1.System.Console.WriteLine(类的实例)默认调用类的Tostring()方法.如果自定义的新类未override ToString()方法.那么调用Object.ToStrin ...

  4. 探究Spring原理

    探究Spring原理 探究IoC原理 首先我们大致了解一下ApplicationContext的加载流程: 我们可以看到,整个过程极为复杂,一句话肯定是无法解释的,所以我们就从ApplicationC ...

  5. Scrapy(五):Response与Request、数据提取、Selector、Pipeline

    学习自Requests and Responses - Scrapy 2.5.0 documentation Request在Spider中生成,被Downloader执行,之后会得到网页的Respo ...

  6. MySQL:修改MySQL登录密码

    在MySQL cmd中: 1.1:ALTER USER 'root'@'localhost' IDENTIFIED BY 'password' PASSWORD EXPIRE NEVER; #修改加密 ...

  7. WPF页面后台代码InitializeComponent()报错

    InitializeComponent(); 报错: 查看对应的前台xaml文件中,主标签中是否缺失引用: x:class="命名空间.类名"

  8. thinkPHP ajax 状态修改(上架修改为下架)

    <td> {if $v.status==1} <span class="top{$v.id}" name="0" onclick=" ...

  9. eval()计算某个字符串,js和jquery都可以使用

    实例 执行JavaScript代码或表达式: <script>eval("x=10;y=20;document.write(x*y)");document.write( ...

  10. 《前端运维》一、Linux基础--06Shell流程控制

    这章我们来学习下流程控制,简单来说就是逻辑判断和循环的写法.并不复杂,我们来简单地看下. 1.if语句 shell的if语句有两种写法,一种是shell脚本式的,一种是命令式的. if conditi ...