TestNG 并行执行与数据提供程序

2022-09-03 04:51:32

我有一个从数据提供者接收数据的测试。我希望此测试与数据提供程序的不同值并行运行。

我尝试了这样的方法:

public class IndependentTest
{
@Test(dataProvider = "dp1" ,threadPoolSize=3,invocationCount=1)

public void testMethod(int number)
{
    Long id = Thread.currentThread().getId();
    System.out.println("HELLO :  " + id);
}


@DataProvider(name = "dp1",parallel=true)
public Object[][] dp1() {
  return new Object[][] {
      new Object[] { 1 },
      new Object[] { 2 },
      new Object[] { 3 },
      new Object[] { 4 },
      new Object[] { 5 },
      new Object[] { 6 },
      new Object[] { 7 },
      new Object[] { 8 }

  };
}

}

我收到的输出是:

你好 : 10

你好 : 12

你好 : 17

你好 : 11

你好 : 16

你好 : 14

你好 : 13

你好 : 15

生成了 10 个线程,而我在线程池大小中指定了 5 个线程。您能否告诉必须向上面的代码段添加哪些内容才能控制数据提供程序线程池大小。


答案 1

您需要使用 .和 值不是必需的。请在此处查看详细信息。dataproviderthreadcountthreadpoolsizeinvocationcount


答案 2

尝试按以下方式设置线程池:

@BeforeClass
public void setupClassName(ITestContext context) {
    context.getCurrentXmlTest().getSuite().setDataProviderThreadCount(5);
    context.getCurrentXmlTest().getSuite().setPreserveOrder(false);
}