testng ITestListener使用


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM