【问题标题】:Facing issue with parallel test execution in TestNG when using @DataProvider with TestNG XML将 @DataProvider 与 TestNG XML 一起使用时,在 TestNG 中面临并行测试执行问题
【发布时间】:2017-03-31 12:48:55
【问题描述】:

我编写了一个 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 个线程。

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

【问题讨论】:

    标签: testng threadpool testng-dataprovider


    【解决方案1】:

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

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

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

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

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

    【讨论】:

      猜你喜欢
      • 2020-03-01
      • 2015-07-26
      • 1970-01-01
      • 2014-04-04
      • 1970-01-01
      • 1970-01-01
      • 2019-02-01
      • 2018-04-01
      相关资源
      最近更新 更多