ITestListener适用场景

当使用testng执行测试时,我们常会想在某个阶段做一些特别的处理,比如:测试成功结束后,测试失败后,跳过某个脚本后,全部脚本执行完毕后。要想达成这个目标,我们需要实现testng的ITestListener接口,自定义一个自己的listener。ITestListener包含两种类型的方法:一类是测试用例级别的,例如onTestStart,onTestSuccess,onTestFailure,onTestSkipped,onTestFailedButWithinSuccessPercentage;另一类是测试集级别的,例如onStart,onFinish。这些方法有一个输入参数,result或者context。result是ITestResult类型的,可以知晓测试用例成功或者失败和测试何时开始等信息。context是ITestContext类型的,适用于测试集级别,可以知晓成功的脚本有哪些,失败的脚本有哪些。

实现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] ------------------------------------------------------------------------

testng ITestListener使用的更多相关文章

  1. testng日志 ITestListener

    上一节我们写一个日志类 extends   TestListenerAdapter ----------TestListenerAdapter 是 ITestListener 实现的一个类 这一节,我 ...

  2. TestNG中 ITestListener 的使用

    1.关于testng中ITestListener 的相关介绍文档,请参考: http://javadox.com/org.testng/testng/6.8.7/org/testng/ITestLis ...

  3. TestNG官方文档中文版(4)-运行TestNG

    4 - 运行TestNG TestNG可以以不同的方式调用: * Command line     * ant     * Eclipse     * IntelliJ's IDEA 1) 命令行 假 ...

  4. TestNG官方文档中文版(2)-annotation(转)

    1. 介绍    TestNG是一个设计用来简化广泛的测试需求的测试框架,从单元测试(隔离测试一个类)到集成测试(测试由有多个类多个包甚至多个外部框架组成的整个系统,例如运用服务器). 编写一个测试的 ...

  5. TestNG扩展

    1. TestNG API 本章节将讨论如何使用TestNG API来创建自己的TestNG对象.TestNG的API基本由接口组成,这样做是为了容易模拟TestNG返回的对象. 1.1 org.te ...

  6. testng跑失败用例重试

    testng 提高用例通过率,失败用例要重新运行一次 步骤: 1.新建一个Retry 类,implements IRetryAnalyzer接口,这个类里面确定重跑次数,以及分析每次失败是否需要重新运 ...

  7. TestNG详解-深度好文

    转自: https://blog.csdn.net/lykangjia/article/details/56485295 TestNG详解-深度好文 2017年02月22日 14:51:52 阅读数: ...

  8. TestNG失败用例自动截图

    参考:https://blog.csdn.net/wangxin1982314/article/details/50247245 1. 首先写一个截屏方法 public class ScreenSho ...

  9. TestNG 判断文件下载成功

    用WatchService写一个方法放在onTestStart()方法里监听文件夹的变化. 但是判断下载成功还需要写一个方法, 用来判断什么时候文件从.xlsx.rcdownload改成.xlsx才行 ...

随机推荐

  1. 聊聊、Zookeeper 客户端 Curator

    [Curator]   和 ZkClient 一样,Curator 也是开源客户端,Curator 是 Netflix 公司开源的一套框架. <dependency> <groupI ...

  2. 危急,不要任意让站点记住password自己主动登陆!

    为了方便用户登录,差点儿全部的站点都实现了"记住password"."自己主动登陆"这样似乎人性化的功能. 我也非常喜欢这个功能,由于我自己的脑子实在是讨厌记东 ...

  3. crm操作业务部门

    using System;     using System.Linq;     using Microsoft.Xrm.Sdk;     using Microsoft.Crm.Sdk.Messag ...

  4. UNP学习笔记(第二十五章 信号驱动式I/O)

    信号驱动式I/O是指进程预先告知内核,使得当某个描述符发生某事时,内核使用信号通知相关进程. 套接字的信号驱动式I/O 针对一个套接字使用信号驱动式I/O(SIGIO)要求进程执行以下3个步骤: 1. ...

  5. ICON小工具如何使用

    对于ICON这个小资源,我们可以手动绘制.选择bmp图形的大小,尤其是旁边的选择工具(矩形或者弧形),我们可以通过选择工具挪动我们手动绘制的图标,其实图标只有中间那部分有用,其他没有用.还有最右边色拾 ...

  6. cocos2d-x 3.0 内存管理机制

    ***************************************转载请注明出处:http://blog.csdn.net/lttree************************** ...

  7. 【转载】aspx,ascx和ashx使用小结

    做asp.net开发的对.aspx,.ascx和.ashx都不会陌生.关于它们,网上有很多文章介绍."纸上得来终觉浅,绝知此事要躬行",下面自己总结一下做个笔记.1..aspxWe ...

  8. 利用php调用so库文件中的代码

    某个功能被编译到so文件中,那么如何通过php来调用它?一个方法是写一个php模块(php extension),在php中调用该模块内的函数,再通过该模块来调用so中的函数.下面做一个简单的例子,使 ...

  9. spring中的事件 applicationevent 讲的确实不错

    event,listener是observer模式一种体现,在spring 3.0.5中,已经可以使用annotation实现event和eventListner里. 我们以spring-webflo ...

  10. hadoop生态系统学习之路(六)hive的简单使用

    一.hive的基本概念与原理 Hive是基于Hadoop之上的数据仓库,能够存储.查询和分析存储在 Hadoop 中的大规模数据. Hive 定义了简单的类 SQL 查询语言,称为 HQL.它同意熟悉 ...