java selenium 用例順序執行/串聯執行

在使用java TestNG執行selenium用例的時候,如果不指定測試用例的執行順序,那麼就默認是按照字母的順序執行。以下爲兩種順序執行方式:
一. 同一個class裏多個方法的順序執行
1. 方法一:我們可以通過給每個方法取名來定義執行的順序,如下:

    //登錄系統前臺
    @Test
    public void test01_loginfront() {
    }
    //提交訂單
    @Test
    public void test02_createbid(){
    }
    //後臺審覈訂單
    @Test
    public void test03_check(){
    }

按照上面的取名方式,最後方法的執行順序爲test01_loginfront→test02_createbid→test03_check,這樣就達到我們要的效果啦

2. 方法二:使用priority指定執行順序(默認值爲0),數值越小,越靠前執行

    //登錄系統前臺
    @Test(priority = 0)
    public void loginfront() {
    }
    //提交訂單
    @Test(priority = 2)
    public void createbid(){
    }
    //後臺審覈訂單
    @Test(priority = 1)
    public void check(){
    }

按照上面的取名方式,數值越小的越靠前執行,最後方法的執行順序爲loginfront→check→createbid

3. 在TestNG.xml文件中加preserve-order="true"這個屬性

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<test name="Demo" >
    <classes>
        <class name="com.test.Demo">
            <methods preserve-order="true">
                <include name="loginfront" />
                <include name="createbid" />
                <include name="check" />
            </methods>
        </class>
    </classes>
</test>
</suite>

二、同時執行多個類class,或者java selenium 同時執行多個測試用例

<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >
<suite name="Suite1">
<test name="test12" preserve-order="true">
    <classes>
        <class name="testcase.case1"/>
        <class name="testcase.case2"/>
        <class name="testcase.case3"/>
    </classes>
</test>
</suite>

該例子中,case1、case2、case3爲3條測試用例,如果需要一起執行的話,就可以使用上面這種方式執行哦,這裏有個問題需要注意:看你的測試用例是可以併發執行還是串聯執行,這個時候就涉及到class裏方法命名的區分。

例子1 :
case1裏的方法示例:

    //登錄系統前臺
    @Test(priority = 0)
    public void loginfront() {
    }
    //提交訂單
    @Test(priority = 2)
    public void createbid(){
    }
    //後臺審覈訂單
    @Test(priority = 1)
    public void check(){
    }

如果3條測試用例裏的方法都用priority 定義了執行的順序,且指定了相同的priority數值,那麼TestNG會先跑完所有相同數值priority的測試方法,而不管你的測試方法是不是在同一個class裏面,即這裏的執行順序爲case1.loginfront→case2.loginfront→case3.loginfront→case1.createbid→case2.createbid→case3.createbid→case1.check→case2.check→case3.check,這樣的執行順序可能會導致我們的web selenium無法正常執行,所以class裏的方法此時不能通過這種方式進行順序執行,應該使用以下這種類型的:

    //登錄系統前臺
    @Test
    public void test01_loginfront() {
    }
    //提交訂單
    @Test
    public void test02_createbid(){
    }
    //後臺審覈訂單
    @Test
    public void test03_check(){
    }

或者是通過字母區分:

    //登錄系統前臺
    @Test
    public void A_loginfront() {
    }
    //提交訂單
    @Test
    public void B_createbid(){
    }
    //後臺審覈訂單
    @Test
    public void C_check(){
    }

或者是在test.xml裏面執行方法的執行順序

<?xml version="1.0" encoding="UTF-8"?>
<suite name="Suite" parallel="false">
<test name="Demo" >
    <classes>
        <class name="com.test.Demo">
            <methods preserve-order="true">
                <include name="loginfront" />
                <include name="createbid" />
                <include name="check" />
            </methods>
        </class>
    </classes>
</test>
</suite>

按照這種方式設置後的執行順序爲:case1.loginfront→case1.createbid→case1.check→case2.loginfront→case2.createbid→case2.checkcase3.loginfront→case3.createbid→case3.check

完美解決Java selenium 測試用例順序執行的問題

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章