并行化 类 和 testng 中的方法
Parallelizing classes and method in testng
我有一个用例,我必须在一个 class 下动态地 运行 某些测试方法。
我正在使用 @factory
注释来动态生成这些测试 classes。
我已经在提到的 class 运行ning 下并行使用了我的测试方法。
如何使测试 classes 和测试方法并行?无论如何也可以这样做吗?
public class FactoryClass {
@Factory
public Object[] factoryMethod() {
return new Object[] { new TestClass(), new TestClass() }
}
}
public class TestClass {
@DataProvider(name = "firstDataProvider", parallel = true)
public Object[] firstDataProvider() {
return new Object[] { };
}
@DataProvider(name = "secondDataProvider", parallel = true)
public Object[] secondDataProvider() {
return new Object[] { };
}
@Test(dataProvider = "firstDataProvider")
public void firstTestMethod(String arg) {
}
@Test(dataProvider = "secondDataProvider")
public void secondTestMethod(String arg) {
}
}
test.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" parallel="methods" data-provider-thread-count="60">
<test name="test1">
<classes>
<class name="com.amriteya.test.FactoryMain"></class>
</classes>
</test>
</suite>
以下是我的 classes 的布局。
在 test.xml
中,我正在设置 parallel="methods" 但它没有为我提供正确的输出。
您不能同时为测试方法和测试 class 设置并行 属性。看来您需要在套件级别设置并行测试并在测试级别设置并行 classes/methods,这里的 testng xml 示例要清楚:
<suite name="Suite1" parallel="tests">
<test name="test1" parallel="methods">
<classes>
<class name="FactoryClass"/>
</classes>
</test>
<test name="test2" parallel="methods">
<classes>
<class name="FactoryClass"/>
</classes>
</test>
</suite>
所有方法都将 运行 在唯一线程中。
当您想 运行 并行测试时,这种情况很有用,例如在几组浏览器上。套件级别的并行选项将定义您有例如两个浏览器池(Chrome 和 Firefox - 您将向测试传递适当的参数),测试级别的 parellel 选项将定义池中有多少浏览器。
我有一个用例,我必须在一个 class 下动态地 运行 某些测试方法。
我正在使用 @factory
注释来动态生成这些测试 classes。
我已经在提到的 class 运行ning 下并行使用了我的测试方法。
如何使测试 classes 和测试方法并行?无论如何也可以这样做吗?
public class FactoryClass {
@Factory
public Object[] factoryMethod() {
return new Object[] { new TestClass(), new TestClass() }
}
}
public class TestClass {
@DataProvider(name = "firstDataProvider", parallel = true)
public Object[] firstDataProvider() {
return new Object[] { };
}
@DataProvider(name = "secondDataProvider", parallel = true)
public Object[] secondDataProvider() {
return new Object[] { };
}
@Test(dataProvider = "firstDataProvider")
public void firstTestMethod(String arg) {
}
@Test(dataProvider = "secondDataProvider")
public void secondTestMethod(String arg) {
}
}
test.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1" parallel="methods" data-provider-thread-count="60">
<test name="test1">
<classes>
<class name="com.amriteya.test.FactoryMain"></class>
</classes>
</test>
</suite>
以下是我的 classes 的布局。
在 test.xml
中,我正在设置 parallel="methods" 但它没有为我提供正确的输出。
您不能同时为测试方法和测试 class 设置并行 属性。看来您需要在套件级别设置并行测试并在测试级别设置并行 classes/methods,这里的 testng xml 示例要清楚:
<suite name="Suite1" parallel="tests">
<test name="test1" parallel="methods">
<classes>
<class name="FactoryClass"/>
</classes>
</test>
<test name="test2" parallel="methods">
<classes>
<class name="FactoryClass"/>
</classes>
</test>
</suite>
所有方法都将 运行 在唯一线程中。 当您想 运行 并行测试时,这种情况很有用,例如在几组浏览器上。套件级别的并行选项将定义您有例如两个浏览器池(Chrome 和 Firefox - 您将向测试传递适当的参数),测试级别的 parellel 选项将定义池中有多少浏览器。