[英]testng not running in priority order when dependsOnMethods is specified
每當我們在@Test
注釋方法上指定priority
和dependsOnMethods
時,測試方法的執行順序不是根據優先級。 為什么會這樣? 這是演示問題的測試類:
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 依賴項)將首先執行。 然后將執行具有依賴關系的方法。 如果即使在此排序之后執行順序仍存在歧義,則優先級就會出現。
這是訂購方案:
現在所有歧義都解決了,因為沒有兩個方法可以具有相同的名稱。
我今天遇到了同樣的問題。
起初,我只為我的測試使用priority
,但后來我還需要添加dependsOnMethods
。
最初我只將dependsOnMethods
添加到我的一些@Test
方法中。 結果,我的測試的執行順序打亂了。
我已經讀了很多有關這個話題的文章和討論,事實證明,即使用的priority
和dependsOnMethods
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.