TestNG 与 DataProvider 并行执行

新手上路,请多包涵

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

我尝试了一种方法:

 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 个。您能否告诉我们必须向上面的代码片段添加什么来控制数据提供程序线程池的大小。

原文由 sujith 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 658
2 个回答

您需要使用 dataproviderthreadcountthreadpoolsizeinvocationcount 值。 在此处 查看详细信息。

原文由 niharika_neo 发布,翻译遵循 CC BY-SA 4.0 许可协议

您可以通过在其定义中添加额外配置“parallel=true”以及 DataProvider 的名称来实现此目的。示例如下:

 @DataProvider(name="InvalidLoginDataProvider", parallel = true)
public Object[][] myDataProviderMethod(){
...
...
}

根据 TestNG 文档,@Test 线程池(使用 @Test 中的 invocationCount 和 threadPoolSize 参数创建)和数据提供程序线程池不同,管理方式也不同。

因此,要指定数据提供程序线程池中有多少个线程,必须在 testng.xml 文件中添加以下配置。

 <suite name="Suite1" data-provider-thread-count="20" >
...
...
</suite>

喂!

原文由 ChaM 发布,翻译遵循 CC BY-SA 4.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题