请创建监听器的类 extends TestListenerAdapter,完成以下需求:
1、如果测试方法失败,使用webdriver的TakesScreenshot对页面进行截屏
2、所有的测试用例执行完成后,统计失败的测试用例,成功的测试用例各有多少条,在控制台输出“类名_方法名”
import org.testng.itestresult;
import org.testng.testlisteneradapter;
import org.openqa.selenium.webdriver;
import org.openqa.selenium.outputtype;
import org.openqa.selenium.takesscreenshot;
public class mytestlistener extends testlisteneradapter {
// 定义一个计数器记录成功和失败执行的测试用例数量
private int passcount = 0;
private int failcount = 0;
@override
public void ontestfailure(itestresult result) {
system.out.println("test failed: " + result.getname());
// cast the driver instance from the test and take screenshot.
webdriver driver = ((yourtestclass)result.getinstance()).getdriver();
if(driver instanceof takesscreenshot){
takesscreenshot scrshot = (takesscreenshot)driver;
byte[] screenshot = scrshot.getscreenshotas(outputtype.bytes);
result.setattribute("screenshot", screenshot);
}
failcount++;
}
/*
* 在测试完成后打印出统计结果
*/
@override
public void onfinish(itestcontext context) {
system.out.println("pass count : "+passcount);
system.out.println("fail count : "+failcount);
}
/*
* 在测试通过时增加计数器
*/
@override
public void ontestsuccess(itestresult tr) {
passcount++;
}
}
解释:此类是一个testng框架下的***,继承自testlisteneradapter。在代码中定义了2个计数器:passcount和failcount,用于记录测试执行成功和失败的测试用例数量。
在执行过程中,如果测试用例执行失败,则会调用ontestfailure方法,需要使用takesscreenshot接口来截取当前页面的截图,并存放到测试结果中。同时,失败计数器failcount加1。
在所有测试执行完成后会自动调用onfinish()方法,在其中输出成功和失败的测试用例各有多少条。
在testng测试框架中,一个基本的测试单元是一个测试类,里面包含了多个测试方法。