在實際測試中,爲了節省測試時間,提升測試效率,在實際測試場景中常常會採用多線程的方式去執行,好比爬蟲爬數據,多瀏覽器並行測試。瀏覽器
TestNG中實現多線程並行執行,能夠經過如下幾種方法:多線程
本文着重介紹下以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()); } }
在<suite>標籤中用parallel和thread-count兩個屬性聲明多線程:parallel表明級別,thread-count表明最大併發線程數。測試
不一樣的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
全部用例在不一樣的線程下去執行
配置文件以下:
<?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運行效果以下:
相同的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文件配置這種方式不能指定線程池,只有方法上才能夠指定線程池
本文完,還不動手試一試········