我无法并行调用浏览器,这些浏览器目前正在一个接一个地调用。需要一种在并行测试中调用浏览器的方法。 注意:在我的配置xml文件中,我将线程数保持为2。
以下是我的配置文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "testng.org/testng-1.0.dtd"; >
<suite name="Parallel" parallel="tests" thread-count="4" >
<test verbose="3" name="<name>">
<parameter name="platform" value ="win8"/>
<parameter name="browsername" value ="internet explorer"/>
<classes>
<class name="com.parallel.execution.ParallelExecution">
<methods>
<include name="testmethod1"/>
</methods>
</class>
</classes>
</test>
</suite>
我们必须在简单的testng.xml文件中定义两个属性“parallel”和“thread-count”。见下文:
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Parallel Execution suite" parallel="methods" thread-count="2">
<test name="Regression 2">
<classes>
<class name="com.parallel.TestParallelExecution"/>
</classes>
</test>
</suite>
在上面,我们希望测试方法并行执行,我们将parallel属性设置为'methods',thread-count属性将控制要创建的最大线程数。
重新安装TestNG解决了上述问题。
您必须显式编写代码以调用浏览器作为@Before
配置的一部分,以便在每次运行@Test时调用浏览器。我将指定众多方法中的一种,以便您获得一个想法。
<suite name="Parallel" parallel="tests" thread-count="4" >
<test verbose="3" name="test1">
<classes>
<class name="com.parallel.execution.ParallelExecution1"/>
</classes>
</test>
<test verbose="3" name="test2">
<classes>
<class name="com.parallel.execution.ParallelExecution2"/>
</classes>
</test>
</suite>
考虑一个套件文件,其中2个tests
设置为并行运行。我们期望的是ParallelExecution1中的@Test
方法在第一个浏览器中运行,而ParallelExecution2中的@Test
方法在第二个浏览器中运行。因此,您需要一种机制,通过该机制可以调用浏览器会话并运行测试方法。输入BaseTest
类。
public abstract class BaseTest {
protected WebDriver driver;
@BeforeTest
@Parameters({"browser"})
public void init(String browser) {
// Initialize your browser here. Code below is dummy
driver = new FF();
}
@AfterTest
public void end() {
driver.close();
driver.quit();
}
}
现在在两个测试类中继承这个'BaseTest'。
public class ParallelExecution1 extends BaseTest {
@Test
public void test1() {
}
}
public class ParallelExecution2 extends BaseTest {
@Test
public void test2() {
}
}
现在两个测试都有@BeforeTest
和@AfterTest
方法,它们将调用浏览器。