上一节我们写一个日志类 extends testlisteneradapter ----------testlisteneradapter 是 itestlistener 实现的一个类
这一节,我们写一个日志类 implements itestlistener
itestnglistener 接口 有两个子接口:ireporter (生成报告)、itestlistener (生成日志)
此次我们写一个日志类直接实现 itestlistener 接口
在自定义的 customlistener 中,需要实现 itestlistener 的全部方法。
使用自定义的listener
现在完成了创建listener,还需要声明listener,然后测试脚本才能使用这个listener。
有两种方式声明listener:
一种是 添加@listeners 注解到测试条例上,缺点是每个使用自定义listener的测试条例都要添加@listeners注解,很麻烦。
另一种是 使用testng.xml配置文件,在其中添加suite标签和listener标签。
输出结果:
testng.xml 文件
itestlistener适用场景
当使用testng执行测试时,我们常会想在某个阶段做一些特别的处理,比如:测试成功结束后,测试失败后,跳过某个脚本后,全部脚本执行完毕后。
要想达成这个目标,我们需要实现testng的itestlistener接口,自定义一个自己的listener。
itestlistener包含两种类型的方法:
一类是测试用例级别的,例如onteststart,ontestsuccess,ontestfailure,ontestskipped,ontestfailedbutwithinsuccesspercentage;
另一类是测试集级别的,例如onstart,onfinish。这些方法有一个输入参数,result或者context。
result是itestresult类型的,可以知晓测试用例成功或者失败和测试何时开始等信息。
context是itestcontext类型的,适用于测试集级别,可以知晓成功的脚本有哪些,失败的脚本有哪些。