在实际测试中,为了节省测试时间,提高测试效率,在实际测试场景中经常会采用多线程的方式去执行,比如爬虫爬数据,多浏览器并行测试。
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)下的用例可以在不同的线程下执行
配置文件如下:
<?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运行效果如下:
所有用例在不同的线程下去执行
配置文件如下:
<?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文件配置这种方式不能指定线程池,只有方法上才可以指定线程池
本文完,还不动手试一试········
原文:https://www.cnblogs.com/longronglang/p/10878262.html