TestNG中的顺序+并行执行

时间:2013-11-11 11:22:49

标签: selenium-webdriver testng selenium-grid

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

我想在 顺序 ModuleTest <中运行 AccountTest 设备测试 / em> UserTest 并行。 并行执行正在发生,但 AccountTest 设备测试未在 顺序 中运行而是他们开始在并行中运行。有没有办法让它们以顺序运行?

我有两个测试类如下

1.AccountTest

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() {
}

}

2.DeviceTest

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() {
    }

    }

问题是AccountTest的第一个 @BeforeTest 方法执行而不是去AccountTest的 @Test(priority = 0) @BeforeTest DeviceTest执行的方法。我希望在转到DeviceTest之前先运行整个AccountTest类

2 个答案:

答案 0 :(得分:0)

要实现此目的,您需要将@BeforeTestAccountTest中的DeviceTest注释更改为@BeforeClass

Per testng.org

@BeforeTest:在运行属于标记内的类的任何测试方法之前,将运行带注释的方法

@BeforeClass:在调用当前类中的第一个测试方法之前,将运行带注释的方法。

答案 1 :(得分:0)

要实现,您可以尝试使用一个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>