testng日志 ITestListener
上一节我们写一个日志类 extends TestListenerAdapter ----------TestListenerAdapter 是 ITestListener 实现的一个类
这一节,我们写一个日志类 implements ITestListener
ITestNGListener 接口 有两个子接口:IReporter (生成报告)、ITestListener (生成日志)
此次我们写一个日志类直接实现 ITestListener 接口
在自定义的 customListener 中,需要实现 ITestListener 的全部方法。
import org.testng.ITestListener;
import org.testng.ITestResult;
import org.testng.ITestContext; /**
* Created by wwh on 17/2/13.
*/
public class customListener implements ITestListener{ public void onTestStart(ITestResult result) {
System.out.println("Test started running" + result.getMethod().getMethodName() +
"at:"+result.getStartMillis());
} public void onTestSuccess(ITestResult result) {
System.out.println("Result success");
} public void onTestFailure(ITestResult result) {
System.out.println("Result failure");
} public void onTestSkipped(ITestResult result) {
System.out.println("Result skip");
} public void onTestFailedButWithinSuccessPercentage(ITestResult result) {
System.out.println("Result fail but with success percentage");
} public void onStart(ITestContext context) {
System.out.println("now start test");
} public void onFinish(ITestContext context) {
System.out.println("now finish test");
}
}
使用自定义的listener
现在完成了创建listener,还需要声明listener,然后测试脚本才能使用这个listener。
有两种方式声明listener:
一种是 添加@Listeners 注解到测试条例上,缺点是每个使用自定义listener的测试条例都要添加@Listeners注解,很麻烦。
另一种是 使用testng.xml配置文件,在其中添加suite标签和listener标签。
方式一:使用注解
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import main.java.com.dbyl.appiumServer.customListener; /**
* Created by wwh on 17/2/14.
*/
@Listeners(customListener.class)//这个语句指明了使用自定义的listener。
public class listenerTest { @Test
public void templistener1(){
System.out.println("i'm listenerTest1");
} @Test
public void templistener2(){
System.out.println("i'm listenerTest2");
}
}
输出结果:
[TestNG] Running:
/Users/wwh/Library/Caches/IdeaIC2016.3/temp-testng-customsuite.xml
now start test
Test started runningtemplistener1at:1487136848622
i'm listenerTest1
Result success
Test started runningtemplistener2at:1487136848712
i'm listenerTest2
Result success
now finish test
===============================================
Default Suite
Total tests run: 2, Failures: 0, Skips: 0
=============================================== Process finished with exit code 0
方式二:使用testng.xml配置文件
import org.testng.annotations.Test; /**
* Created by wwh on 17/2/14.
*/ public class listenerTest { @Test
public void templistener1(){
System.out.println("i'm listenerTest1");
} @Test
public void templistener2(){
System.out.println("i'm listenerTest2");
}
}
testng.xml 文件
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Second suite" verbose="1" >
<listeners>
<listener class-name="main.java.com.dbyl.appiumServer.customListener"></listener>
</listeners>
<test name = "allTestsInAClass" >
<classes>
<class name="main.java.com.dbyl.appiumCore.tests.listenerTest"/>
</classes>
</test>
</suite>
输出结果:
Mac:ProjectWang wwh$ mvn clean test -Dtestng.xml
.
.
.
-------------------------------------------------------
T E S T S
-------------------------------------------------------
Running TestSuite
now start test
Test started runningtemplistener1at:1487125608088
i'm listenerTest1
Result success
Test started runningtemplistener2at:1487125608660
i'm listenerTest2
Result success
now finish test
Tests run: 2, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 7.125 sec - in TestSuite Results : Tests run: 2, Failures: 0, Errors: 0, Skipped: 0 [INFO] ------------------------------------------------------------------------
[INFO] BUILD SUCCESS
[INFO] ------------------------------------------------------------------------
[INFO] Total time: 01:13 min
[INFO] Finished at: 2017-02-15T10:26:51+08:00
[INFO] Final Memory: 22M/182M
[INFO] ------------------------------------------------------------------------
ITestListener适用场景
当使用testng执行测试时,我们常会想在某个阶段做一些特别的处理,比如:测试成功结束后,测试失败后,跳过某个脚本后,全部脚本执行完毕后。
要想达成这个目标,我们需要实现testng的ITestListener接口,自定义一个自己的listener。
ITestListener包含两种类型的方法:
一类是测试用例级别的,例如onTestStart,onTestSuccess,onTestFailure,onTestSkipped,onTestFailedButWithinSuccessPercentage;
另一类是测试集级别的,例如onStart,onFinish。这些方法有一个输入参数,result或者context。
result是ITestResult类型的,可以知晓测试用例成功或者失败和测试何时开始等信息。
context是ITestContext类型的,适用于测试集级别,可以知晓成功的脚本有哪些,失败的脚本有哪些。
testng日志 ITestListener的更多相关文章
- TestNG中 ITestListener 的使用
1.关于testng中ITestListener 的相关介绍文档,请参考: http://javadox.com/org.testng/testng/6.8.7/org/testng/ITestLis ...
- 《手把手教你》系列基础篇(八十四)-java+ selenium自动化测试-框架设计基础-TestNG日志-上篇(详解教程)
1.简介 TestNG还为我们提供了测试的记录功能-日志.例如,在运行测试用例期间,用户希望在控制台中记录一些信息.信息可以是任何细节取决于目的.牢记我们正在使用Selenium进行测试,我们需要有助 ...
- testng日志 TestListenerAdapter
TestListenerAdapter,空方法实现 ITestListener 创建自定义日志记录类 创建另一个新的类名为 CustomListener.java 在 C:\ > TestN ...
- testng日志和报告
TestNG是通过 Listeners 或者 Reporters 生成测试报告. Listeners,即 org.testng.ITestListener 的实现,能够在测试执行过程中发出各种测试结果 ...
- 《手把手教你》系列基础篇(八十五)-java+ selenium自动化测试-框架设计基础-TestNG自定义日志-下篇(详解教程)
1.简介 TestNG为日志记录和报告提供的不同选项.现在,宏哥讲解分享如何开始使用它们.首先,我们将编写一个示例程序,在该程序中我们将使用 ITestListener方法进行日志记录. 2.Test ...
- testng ITestListener使用
ITestListener适用场景 当使用testng执行测试时,我们常会想在某个阶段做一些特别的处理,比如:测试成功结束后,测试失败后,跳过某个脚本后,全部脚本执行完毕后.要想达成这个目标,我们需要 ...
- testng报告-extentsReports使用-klov
extentreport部分参考: https://blog.csdn.net/Care_sQueendom/article/details/78651950 https://testerhome.c ...
- 使用appium和testng实现Android自动截图
简单介绍 需求场景是:当测试安卓应用的脚本得到失败结果时,对当前手机屏幕截图,便于查找问题. 实现方式是:1)定义一个父类UITest,作为所有测试类的父类.在父类中UITest中定义一个截图的方法, ...
- 《手把手教你》系列基础篇(九十二)-java+ selenium自动化测试-框架设计基础-POM设计模式简介(详解教程)
1.简介 页面对象模型(Page Object Model)在Selenium Webdriver自动化测试中使用非常流行和受欢迎,作为自动化测试工程师应该至少听说过POM这个概念.本篇介绍POM的简 ...
随机推荐
- boost 互斥体和锁
1.共享资源是一个自动锁住的房间,互斥体是钥匙,进入房间必须取钥匙,离开房间应该还钥匙.这就对应着互斥体的lock(取钥匙)和unlock(还钥匙). 2.考虑下面的场景:还钥匙的时候出现异常,会发生 ...
- vue-cli打包构建时常见的报错解决方案
报错1:vue-cli项目本地npm run dev启动后,chrome打开是空白页 解决方案:将config下的index.js中的assetsPublicPath路径都设置为‘/’绝对路径 报错2 ...
- hdu4734(记忆化搜索)
题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=4734 思路:记忆化搜索. #include<iostream> #include<c ...
- Git------MyEclipse中使用Git
转载:http://www.mamicode.com/info-detail-928508.html
- OpenSSL创建私有CA
1.编辑/etc/pki/tls/openssl.cnf [ CA_default ] dir = /etc/pki/CA # 工作目录certs ...
- 5个基于Linux命令行的文件下载和网站浏览工具
导读 命令行是GNU/Linux中最神奇迷人的部分,它是非常强大的工具;命令行本身功能多样,多种内建或者第三方的命令行应用使得Linux变得更加健壮和强大.Linux Shell支持多种不同类型的网络 ...
- poj_3260 动态规划
题目大意 顾客拿着N种硬币(币值为value[i], 数量为c[i])去买价值为T的东西,商店老板也有同样N种币值的硬币,但是数量不限.顾客买东西可能需要用硬币找零来使得花出去的钱为T,求顾客给老板的 ...
- java基础---->java中nio的使用(一)
JDK 1.4 中引入的新输入输出 (NIO) 库在标准 Java 代码中提供了高速的.面向块的 I/O.今天我们就简单的学习一下nio的知识.我笑,便面如春花,定是能感动人的,任他是谁. nio的简 ...
- 打开wamp中的phpmyadmin出现403的错误
安装完wamp后打开其下的phpMyAdmin也就是路径 http://localhost/phpmyadmin/ 如果端口不是 80 要加下端口,比如我是 8888 ,所以我的地址是:http:// ...
- Python全栈day28(类的装饰器)
类是一个对象也可以像函数一样加装饰器 类的装饰器.py def deco(obj): print('======',obj) obj.x=1 obj.y=2 obj.z=3 return obj # ...