Testng 并發(fā)測試(thread-count + parallel)

背景

最近在接口用例寫完后,在運行所有接口時遇到接口用例跑完花費時間較長的問題。最長會超過5分鐘時間,為了解決時間過長問題。故此使用了Testng的并發(fā)執(zhí)行的功能。

直接開始

Test測試用例代碼
public class Test1 {
    @Test
    public void testName() {
        System.out.println("test1 testname begin...");
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("test1 testname over...");
    }
}

public class Test2 {
    @Test
    public void testName() {
        System.out.println("test2 testname begin...");
        try {
            Thread.sleep(10000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("test2 testname over...");
    }
}

public class Test3 {
    @Test
    public void testName() {
        System.out.println("test3 testname begin...");
        try {
            Thread.sleep(15000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        System.out.println("test3 testname over...");
    }
}

Test1,Test2,Test3 代碼相同,只是Thread.sleep的時間不同,分別是5s,10s,15s.

xml配置集合
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="test1" verbose="1" preserve-order="true" >
    <parameter name="report.config" value="src/main/resources/config/report/extent-config.xml"/>
    <parameter name="system.info" value="reporter.config.MySystemInfo"/>
    <test name="test1" preserve-order="true">
        <classes>
            <class name="com.onemt.test.Test1"/>
        </classes>
    </test>
    <test name="test2" preserve-order="true">
        <classes>
            <class name="com.onemt.test.Test2"/>
        </classes>
    </test>
    <test name="test3" preserve-order="true">
        <classes>
            <class name="com.onemt.test.Test3"/>
        </classes>
    </test>
    <listeners>
        <listener class-name="reporter.Listener.MyExtentTestNgFormatter"/>
    </listeners>
</suite>

上面的配置并沒有開啟并發(fā)測試,這三個測試用例執(zhí)行時間為 5+10+15 = 30s。
所以測試總時間為30s+。
查看報告執(zhí)行時間:


未開啟并發(fā)執(zhí)行時間
開啟并發(fā)執(zhí)行

直接上xml配置

<suite name="test1" verbose="1" preserve-order="true" thread-count="3" parallel="tests">
    <parameter name="report.config" value="src/main/resources/config/report/extent-config.xml"/>
    <parameter name="system.info" value="reporter.config.MySystemInfo"/>
    <test name="用戶fb登錄" preserve-order="true">
        <classes>
            <class name="com.onemt.test.Test1"/>
        </classes>
    </test>
    <test name="用戶fb2登錄" preserve-order="true">
        <classes>
            <class name="com.onemt.test.Test2"/>
        </classes>
    </test>
    <test name="用戶fb3登錄" preserve-order="true">
        <classes>
            <class name="com.onemt.test.Test3"/>
        </classes>
    </test>
    <listeners>
        <listener class-name="reporter.Listener.MyExtentTestNgFormatter"/>
    </listeners>
</suite>

<suite name="test1" verbose="1" preserve-order="true" thread-count="3" parallel="tests">開啟了線程數(shù)量=3,并發(fā)模式為<tests>模式。
查看報告執(zhí)行時間:

開啟3個并發(fā)線程

可以看到執(zhí)行測試總時間為15s+115ms??梢灾ぴ诓l(fā)模式下,根據(jù)最長的Test3測試時間 (sleep 15s)。

詳解

thread-count 線程池數(shù)量

必須與parallel配套使用,線程池的大小,決定并行線程數(shù)量。

parallel
  • 該參數(shù)的值有:false,methods,tests,classes,instances。默認false
  • parallel必須和thread-count配套使用,否則相當于無效參數(shù),thread-count決定了并行測試時開啟的線程數(shù)量。
  • parallel="mehods" TestNG將并行執(zhí)行所有的測試方法在不同的線程里
  • parallel="tests" TestNG將并行執(zhí)行在同一個<test>下的所有方法在不同線程里
  • parallel="classes" TestNG將并行執(zhí)行在相同<class>下的方法在不同線程里
  • parallel="instances" TestNG將并行執(zhí)行相同實例下的所有方法在不同的線程里
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容