将 @DataProvider 与 TestNG XML 一起使用时,在 TestNG 中遇到并行测试执行问题
Facing issue with parallel test execution in TestNG when using @DataProvider with TestNG XML
我写了一个 TestNG class,其中包含两个方法(一个@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 中,我将参数线程数设置为“2”。但是当我 运行 testng.xml 作为 TestNGSuite 时,@Test
的 4 个实例同时启动,而不是 2 个线程。
如何只限制 testing.xml 中提到的线程数,而不限制从 @DataProvider
传递的 TestData 数量?
TestNG 在 TestNG suite xml
文件中有两个属性,可让您控制 threadpool
大小。
thread-count
- 这使您可以在启用并行性时控制线程数 (tests|classes|methods)。如果未指定,则默认值为 5
data-provider-thread-count
- 这让您可以在涉及数据提供程序时控制线程数。如果未指定,则默认值为 10
要解决您的问题,您可以考虑将 testng-suite.xml
文件中的 data-provider-thread-count
属性设置为 2。在那之后 TestNG 应该只产生两个线程。
请注意:您需要创建一个包含测试 class 的套件 xml 文件。只有这样才能奏效。
有关 TestNG DTD 的更多详细信息,请参阅 here。
我写了一个 TestNG class,其中包含两个方法(一个@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 中,我将参数线程数设置为“2”。但是当我 运行 testng.xml 作为 TestNGSuite 时,@Test
的 4 个实例同时启动,而不是 2 个线程。
如何只限制 testing.xml 中提到的线程数,而不限制从 @DataProvider
传递的 TestData 数量?
TestNG 在 TestNG suite xml
文件中有两个属性,可让您控制 threadpool
大小。
thread-count
- 这使您可以在启用并行性时控制线程数 (tests|classes|methods)。如果未指定,则默认值为 5data-provider-thread-count
- 这让您可以在涉及数据提供程序时控制线程数。如果未指定,则默认值为 10
要解决您的问题,您可以考虑将 testng-suite.xml
文件中的 data-provider-thread-count
属性设置为 2。在那之后 TestNG 应该只产生两个线程。
请注意:您需要创建一个包含测试 class 的套件 xml 文件。只有这样才能奏效。
有关 TestNG DTD 的更多详细信息,请参阅 here。