TestNg之XMl形式實現多線程測試


為什么要使用多線程測試?

在實際測試中,為了節省測試時間,提高測試效率,在實際測試場景中經常會采用多線程的方式去執行,比如爬蟲爬數據,多瀏覽器並行測試。

關於多線程並行測試

TestNG中實現多線程並行執行,可以通過以下幾種方法:

  • @Test注解的形式
  • Xml文件的配置的形式

本文着重介紹下以xml形式實現多線程測試的方法,來讓我們開始吧

如何實現?

1、編寫測試類

package com.testng.demo;

import org.testng.annotations.Test;

public class MultiThreadedByXml {

    @Test
    public void test1() {
        System.out.println("Thread id is " + Thread.currentThread().getId());
    }

    @Test
    public void test2() {
        System.out.println("Thread id is " + Thread.currentThread().getId());
    }

    @Test
    public void test3() {

        System.out.println("Thread id is " + Thread.currentThread().getId());

    }

    @Test
    public void test4() {
        System.out.println("Thread id is " + Thread.currentThread().getId());
    }

    @Test
    public void test5() {
        System.out.println("Thread id is " + Thread.currentThread().getId());
    }
}

2、編寫testng.xml文件

在<suite>標簽中用parallel和thread-count兩個屬性聲明多線程:parallel代表級別,thread-count代表最大並發線程數。

3、tests級別測試

不同的test標簽(tag)下的用例可以在不同的線程下執行

配置文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多線程測試" parallel="tests" thread-count="2">
    <test name="threadTest1">
        <classes>
            <class name="com.testng.demo.MultiThreadedByXml"/>
        </classes>
    </test>
</suite>

通過xml運行效果如下:

 

相同的test標簽(tag)下的用例只能在同一個線程中去執行

配置文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多線程測試" parallel="tests" thread-count="2">
    <test name="threadTest1">
        <classes>
            <class name="com.testng.demo.MultiThreadedByXml"/>
            <class name="com.testng.demo.MultiThreadedByXml"/>
        </classes>
    </test>
</suite>

通過xml運行效果如下:

4、methods級別測試

所有用例在不同的線程下去執行

配置文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多線程測試" parallel="methods" thread-count="2">
    <test name="threadTest1">
        <classes>
            <class name="com.testng.demo.MultiThreadedByXml"/>
        </classes>
    </test>
</suite>

通過xml運行效果如下:

5、classs級別測試

相同的classes標簽下的用例在同一個線程中執行

配置文件如下:

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多線程測試" parallel="classes" thread-count="2">
    <test name="threadTest1">
        <classes>
            <class name="com.testng.demo.MultiThreadedByXml"/>
        </classes>
    </test>
</suite>

通過xml運行效果如下:

不同的classes標簽下的用例可以在不同的線程下執行

<?xml version="1.0" encoding="utf-8" ?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="sml多線程測試" parallel="classes" thread-count="2">
    <test name="threadTest1">
        <classes>
            <class name="com.testng.demo.MultiThreadedByXml"/>
        </classes>
    </test>
    <test name="threadTest2">
        <classes>
            <class name="com.testng.demo.MultiThreadedByXml2"/>
        </classes>
    </test>
</suite>

通過xml運行效果如下:

 

注意:thread-count: 代表了最大並發線程數,xml文件配置這種方式不能指定線程池,只有方法上才可以指定線程池

本文完,還不動手試一試········


免責聲明!

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



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