TestNg+Selenium监听器的使用

请创建监听器的类 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测试框架中,一个基本的测试单元是一个测试类,里面包含了多个测试方法。