簡體   English   中英

指定了dependsOnMethods 時,testng 未按優先級順序運行

[英]testng not running in priority order when dependsOnMethods is specified

每當我們在@Test注釋方法上指定prioritydependsOnMethods時,測試方法的執行順序不是根據優先級。 為什么會這樣? 這是演示問題的測試類:

package unitTest.TestNGTestCases;

import org.testng.annotations.Test;

public class TestNGTest1 {
    @Test(priority=1)
    public void t1()
    {
        System.out.println("Running 1");
    }
    @Test(priority=2,dependsOnMethods="t1")
    public void t2()
    {
        System.out.println("Running 2");
    }
    @Test(priority=3,dependsOnMethods="t2")
    public void t3()
    {
        System.out.println("Running 3");
    }
    @Test(priority=4)
    public void t4()
    {
        System.out.println("Running 4");
    }
}

實際輸出:

Running 1
Running 4
Running 2
Running 3

===============================================
All Tests Suite
Total tests run: 4, Failures: 0, Skips: 0
===============================================

預期輸出:

Running 1
Running 2
Running 3
Running 4

===============================================
All Tests Suite
Total tests run: 4, Failures: 0, Skips: 0
===============================================

測試執行的順序應該是 t1、t2、t3、t4。 當 t2 和 t3 的優先級高於 t4 時,為什么 t4 在 t1 之后執行?

TIA

所有獨立的方法(沒有 @dependsOnMethods 依賴項)將首先執行。 然后將執行具有依賴關系的方法。 如果即使在此排序之后執行順序仍存在歧義,則優先級就會出現。

這是訂購方案:

  1. 執行所有獨立的方法(沒有@dependsOnMethods 注解的方法)
  2. 如果此排序中存在歧義,請使用優先級來解決獨立方法的歧義
  3. 按依賴順序執行依賴方法
  4. 如果此排序中存在歧義,請使用優先級來解決依賴方法的歧義
  5. 如果仍然有歧義(由於沒有使用優先級或兩個具有相同優先級的方法)根據字母順序對它們進行排序。

現在所有歧義都解決了,因為沒有兩個方法可以具有相同的名稱。

我今天遇到了同樣的問題。

起初,我只為我的測試使用priority ,但后來我還需要添加dependsOnMethods

最初我只將dependsOnMethods添加到我的一些@Test方法中。 結果,我的測試的執行順序打亂了。

我已經讀了很多有關這個話題的文章和討論,事實證明,即使用的prioritydependsOnMethods togeter帶來了很多不確定性,為整個畫面和TestNG的行為將永遠是可預見的和良好定義的屬性這個情況。

我的解決方案是將dependsOnMethods添加到我的所有測試方法中,同時我也保留了所有方法的priority 現在它們的執行順序恢復正常,同時我受益於dependsOnMethods的功能。 即鏈中第一個失敗的測試方法,導致所有后續測試方法被跳過並在報告中顯示正確。

這是我的測試類的片段:

   @Test(priority = 2, dependsOnMethods= {"Meganav_Point_C1_and_Click_C3"})
    public void Click_product_in_Category_result_page() throws Throwable {

        Grid.clickProduct(1, 1);

    }


    @Test(priority = 3, dependsOnMethods= {"Click_product_in_Category_result_page"})
    public void PDP_setQty() throws Throwable {

        ProductDetailsPage.setQty(2);

    }


    @Test(priority = 4, dependsOnMethods= {"PDP_setQty"}, alwaysRun= true)
    public void PDP_click_Add_To_Basket() throws Throwable {

        ProductDetailsPage.addToBasket();

    }

希望這可以幫助。

問候, 韋塞林·彼得羅夫

Can someone help me to understand the below sequence of execution?
public class Testpract {

    @Test
    public void setup()
    {
        System.out.println("Setup");
    }
    @Test(priority=1)
    public void gotopage()
    {
        System.out.println("gottopage");
    }
    @Test(priority=2, dependsOnMethods="gotopage")
    public void verifytitle()
    {
        System.out.println("verifytitle");
    }
    @Test(dependsOnMethods="login")
    public void verifyimage()
    {
        System.out.println("verifyimage");
    }

    @Test(dependsOnMethods="verifyhomepage", priority =10)
    public void login()
    {
        System.out.println("login");
    }
    @Test(priority=7)
    public void verifyhomepage()
    {
        System.out.println("verifyhomepage");
    }

output is 
Setup
gottopage
verifyhomepage
PASSED: setup
PASSED: gotopage
PASSED: verifyhomepage


@Test
    public void setup()
    {
        System.out.println("Setup");
    }
    @Test(priority=1)
    public void gotopage()
    {
        System.out.println("gottopage");
    }
    @Test(priority=2, dependsOnMethods="gotopage")
    public void verifytitle()
    {
        System.out.println("verifytitle");
    }
    @Test(dependsOnMethods="login", priority =3)
    public void verifyimage()
    {
        System.out.println("verifyimage");
    }

    @Test(dependsOnMethods="verifyhomepage", priority =10)
    public void login()
    {
        System.out.println("login");
    }
    @Test(priority=7)
    public void verifyhomepage()
    {
        System.out.println("verifyhomepage");
    }

output is
Setup
gottopage
verifytitle
verifyhomepage
login
verifyimage
PASSED: setup
PASSED: gotopage
PASSED: verifytitle
PASSED: verifyhomepage
PASSED: login
PASSED: verifyimage

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM