Testng 并发测试(thread-count + paral

2018-08-01  本文已影响253人  J先生有点儿屁

背景

最近在接口用例写完后,在运行所有接口时遇到接口用例跑完花费时间较长的问题。最长会超过5分钟时间,为了解决时间过长问题。故此使用了Testng的并发执行的功能。

直接开始

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>

上面的配置并没有开启并发测试,这三个测试用例执行时间为 5+10+15 = 30s。
所以测试总时间为30s+。
查看报告执行时间:


未开启并发执行时间
开启并发执行

直接上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">开启了线程数量=3,并发模式为<tests>模式。
查看报告执行时间:

开启3个并发线程
可以看到执行测试总时间为15s+115ms。可以知悉在并发模式下,根据最长的Test3测试时间 (sleep 15s)。

详解

thread-count 线程池数量

必须与parallel配套使用,线程池的大小,决定并行线程数量。

parallel
上一篇下一篇

猜你喜欢

热点阅读