在将@DataProvider与TestNG XML一起使用时,面临TestNG中并行测试执行的问题

时间:2017-03-30 10:51:13

标签: testng threadpool testng-dataprovider

我编写了一个包含两种方法的TestNG类(一个@DataProvider,一个@Test

public class BaseTestNG extends BaseTest{ 
    @DataProvider(name="Demo", parallel=true)
    public Object[][] getData() {
        Object[][] data = new Object[4][2];
        data[0][0] = "sampleuser1";
        data[0][1] = "abcdef";
        data[1][0] = "testuser2";
        data[1][1] = "zxcvb";
        data[2][0] = "guestuser3";
        data[2][1] = "pass123";
        data[3][0] = "guestuser4";
        data[3][1] = "pass123";
        return data;
    }
    @Test(dataProvider="Demo")
    public void BaseTestNG(String username, String password)  {
        System.out.println(username + " :: " & password)
        Thread.currentThread.Sleep(5000);
    }
}

在testng.xml中我将参数thread-count设置为“2”。但是当我将testng.xml作为TestNGSuite运行时,@Test的4个实例同时启动而不是2个线程。

如何仅限制在tests.xml中提到的线程数,而不是限制从@DataProvider传递的TestData数量?

1 个答案:

答案 0 :(得分:2)

TestNG在TestNG suite xml文件中有两个属性,可让您控制threadpool大小。

  • thread-count - 这使您可以在启用并行性(tests | classes |方法)时控制线程数。如果未指定,则默认值为 5
  • data-provider-thread-count - 这使您可以控制涉及数据提供者时的线程数。如果未指定,则默认值为 10

要解决您的问题,您可以考虑将data-provider-thread-count文件中的testng-suite.xml属性设置为 2 。之后,TestNG应该只产生两个线程。

请注意:您需要创建一个包含测试类的套件xml文件。只有这样才能奏效。

有关TestNG DTD的详细信息,请参阅here