1. 程式人生 > >TestNg之XMl形式實現多執行緒測試

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檔案配置這種方式不能指定執行緒池,只有方法上才可以指定執行緒池

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