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

爲何要使用多線程測試?

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

關於多線程並行測試

TestNG中實現多線程並行執行,能夠經過如下幾種方法:多線程

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

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

如何實現?

一、編寫測試類

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());
    }
}

二、編寫testng.xml文件

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

三、tests級別測試

不一樣的test標籤(tag)下的用例能夠在不一樣的線程下執行ui

配置文件以下:spa

<?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)下的用例只能在同一個線程中去執行3d

配置文件以下:code

<?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運行效果以下:xml

四、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運行效果以下:

五、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文件配置這種方式不能指定線程池,只有方法上才能夠指定線程池

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

相關文章
相關標籤/搜索