TestNG测试的并发执行详解

来源:互联网 发布:mac chili色号 编辑:程序博客网 时间:2024/05/01 20:10

TestNG在执行测试时,默认非并发执行。但是TestNG提供了多种方式,以支持测试的并发支持。

1. 针对多个测试规划的情况,为每个testng*.xml配置文件使用独立的线程执行

java org.testng.TestNG -suitethreadpoolsize 3 testng1.xml testng2.xml testng3.xml
通过使用启动参数suitethreadpoolsize,为每个测试规划文件分配一个线程并发执行。


2. 在一个测试规划中,指定其并发策略(有两种等价的实现方式)

1).通过命令行参数

java org.testng.TestNG -parallel methods -threadcount 4 testng.xml
在当前测试规划的执行过程中,为每个测试方法的执行使用单独的线程,最多并发4个线程。


java org.testng.TestNG -parallel tests <span style="font-family: Arial, Helvetica, sans-serif;">-threadcount 4</span> testng.xml
在当前测试规划的执行过程中,为每个测试用例的执行使用单独的线程(该测试用例中的测试方法共享一个线程),最多并发4个线程。


java org.testng.TestNG -parallel classes<span style="font-family: Arial, Helvetica, sans-serif;"> -threadcount 4</span> testng.xml
在当前测试规划的执行过程中,为每个测试类的执行使用单独的线程(该测试类中的测试方法共享一个线程),最多并发4个线程。

2).通过testng.xml配置文件

<suite name="My suite" parallel="methods" thread-count="4">
在当前测试规划的执行过程中,为每个测试方法的执行使用单独的线程,最多并发4个线程。


<suite name="My suite" parallel="tests" thread-count="4">
在当前测试规划的执行过程中,为每个测试用例的执行使用单独的线程(该测试用例中的测试方法共享一个线程),最多并发4个线程。


<suite name="My suite" parallel="classes" thread-count="4">
在当前测试规划的执行过程中,为每个测试类的执行使用单独的线程(该测试类中的测试方法共享一个线程),最多并发4个线程。


<suite name="My suite" parallel="instances" thread-count="4">
在当前测试规划的执行过程中,为每个测试示例的执行使用单独的线程(该测试实例中的测试方法共享一个线程),最多并发4个线程。

3. 在测试方法中,指定其可用的线程池

还可以单独为一个测试方法指定可使用的线程池,示例如下:

@Test(threadPoolSize = 3, invocationCount = 10,  timeOut = 10000)public void testServer() {...}
说明:该测试方法可在3个线程中并发执行,共被调用10次,执行超时10秒。

4. @DataProvider的并发

在定义数据源的时候,不仅仅可以为数据源指定name,还可以为其指定parallel属性,示例如下:

@DataProvider(name = "test1", parallel = true)public Object[][] createData1() { return new Object[][] {   { "Cedric", new Integer(36) },   { "Anne", new Integer(37)}, };}
parallel属性默认false,表示使用该数据源的测试方法不能并发执行。parallel属性设置为true,表示使用该数据源的测试方法可以并发执行。


5. 注意:在定义测试类的时候,如果@Test使用了singleThreaded=true属性,则该测试类的所有测试方法都只能在单线程中执行,无论其他设置如何。示例如下:

@Test(singleThreaded=true)public class Test1 {  public void test1() {  }   public void test2() {  }}

2 0
原创粉丝点击