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参考代码
代码语言:javascript复制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包,然后执行就可以了。
好了,今天时间不早了,今天宏哥就分享和讲解到这里,感谢您耐心地阅读!