Selenium webdriver 顺序+;TestNG中的并行执行

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>

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>
        <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>