為什麼要使用多執行緒測試?
在實際測試中,為了節省測試時間,提高測試效率,在實際測試場景中經常會採用多執行緒的方式去執行,比如爬蟲爬資料,多瀏覽器並行測試。
關於多執行緒並行測試
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檔案配置這種方式不能指定執行緒池,只有方法上才可以指定執行緒池
本文完,還不動手試一試········