Selenium webdriver 顺序+;TestNG中的并行执行
2.设备测试Selenium webdriver 顺序+;TestNG中的并行执行,selenium-webdriver,testng,selenium-grid,Selenium Webdriver,Testng,Selenium Grid,2.设备测试 <?xml version="1.0" encoding="UTF-8"?> <suite name="Parallel test runs" parallel="tests" thread-count="2"> <test name="ModuleTest"> <classes> <class name="com.qa.testcases.AccountTest" ></class>
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Parallel test runs" parallel="tests" thread-count="2">
<test name="ModuleTest">
<classes>
<class name="com.qa.testcases.AccountTest" ></class>
<class name="com.qa.testcases.DeviceTest" ></class>
</classes>
</test>
<test name="UserTest">
<classes>
<class name="com.qa.testcases.UserTest" ></class>
</classes>
</test>
</suite>
public class AccountTest {
@BeforeTest
public void setUp() {
}
@Test(Priority=0)
public void createAccount(){
}
@Test(Priority=1)
public void editAccount(){
}
@Test(Priority=2)
public void deleteAccount(){
}
@AfterTest
public void closeSession() {
}
}
问题是首先执行AccountTest的@BeforeTest方法,而不是执行AccountTest的@Test(优先级=0),而是执行DeviceTest的@BeforeTest方法。我希望在转到DeviceTest之前首先运行整个AccountTest类。要实现这一点,您需要将
AccountTest
中的@BeforeTest
注释和DeviceTest
更改为@BeforeTest
每testng.org
@BeforeTest:在运行属于标记内类的任何测试方法之前,将运行带注释的方法
@BeforeClass:在调用当前类中的第一个测试方法之前,将运行带注释的方法。要实现此目的,可以使用一个xml文件尝试以下操作:
public class DeviceTest {
@BeforeTest
public void setUp() {
}
@Test(Priority=0)
public void createDevice(){
}
@Test(Priority=1)
public void editDevice(){
}
@Test(Priority=2)
public void deleteDevice(){
}
@AfterTest
public void closeSession() {
}
}
是否有任何限制,所有3种测试方法都应属于同一类别?如果没有,您可以将UserTest移动到另一个类,并将并行值更改为class,而不是testAccountTest、DeviceTest和UserTest是三个不同的类,我希望AccountTest和DeviceTest按顺序运行。是否有任何参数可以在类标记处声明以进行顺序执行?您必须为此创建两个不同的xml,或者创建另一个测试类,然后在此类中调用AccountTest/DeviceTest方法。@TestAutomationEngr-让我用两个不同的xml进行尝试。我们不能用相同的xml实现它吗?@METIsatish您使用的是哪个版本的testNG?我刚刚用虚拟类尝试了相同的suite.xml,它对我来说是正确的。仅在完成帐户类方法后才调用设备类方法。我正在使用testng版本-6.8@A.J:是的。和之前一样的行为。我想我应该有两个.xml文件
<?xml version="1.0" encoding="UTF-8"?>
<suite name="Parallel test runs" parallel="tests" thread-count="2">
<test name="ModuleTest" parallel="false">
<classes>
<class name="com.qa.testcases.AccountTest" ></class>
<class name="com.qa.testcases.DeviceTest" ></class>
</classes>
</test>
<test name="UserTest" parallel="false">
<classes>
<class name="com.qa.testcases.UserTest" ></class>
</classes>
</test>
</suite>