溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

使用java+TestNG進行接口回歸測試

發(fā)布時間:2020-05-28 13:07:05 來源:網絡 閱讀:670 作者:宜信技術 欄目:軟件技術

【技術沙龍002期】數(shù)據中臺:宜信敏捷數(shù)據中臺建設實踐|宜信技術沙龍 將于5月23日晚8點線上直播,點擊報名

TestNG是一個開源自動化測試框架,“NG”表示下一代(Next Generation的首字母)。 TestNG類似于JUnit(特別是JUnit 4),但它不是JUnit框架的擴展,相較于Junit而言,功能更強大,使用起來更加方便,比較適合測試人員來進行集成測試或是接口回歸測試。

一、TestNG的特點

  • 使用java和面向對象的功能

  • 方法的名稱就不必受限于某種固定的格式,可以通過注釋來識別需要執(zhí)行的方法;

  • 方法中需要的一些參數(shù)可以通過注釋傳遞;

  • 注釋是強類型的,所以有錯誤可以在編譯期體現(xiàn)出來;

  • 支持分組測試,依賴測試,并行測試,負載測試等

  • 支持多線程測試

二、TestNG常用的注釋類型

注釋 描述
@Test 將類或是方法標記為測試的一部分
@BeforeSuite 在該套件的所有測試都運行在注釋的方法之前,僅運行一次。
@AfterSuite 在該套件的所有測試都運行在注釋的方法之后,僅運行一次
@BeforeClass 在調用當前類的所有測試方法之前執(zhí)行,注釋方法僅運行一次
@AfterClass 在調用當前類的所有測試方法之后執(zhí)行,注釋方法僅運行一次
@BeforeTest 注釋的方法將在屬于<test>標簽內的類的所有測試方法運行之前運行
@AfterTest 注釋的方法將在屬于<test>標簽內的類的所有測試方法運行之后運行。
@BeforeGroups 此方法是保證在運行屬于任何這些組的第一個測試方法之前,該方法被調用
@AfterGroups 此方法是保證運行屬于任何這些組的所有測試方法執(zhí)行之后,該方法被調用
@BeforeMethod 被注釋的方法將在每個測試方法之前執(zhí)行
@AfterMethod 被注釋的方法將在每個測試方法之后執(zhí)行
@DataProvider 被注釋的方法的作用是提供測試數(shù)據,如果某個測試方法希望從這個DataProvider接收數(shù)據,就必須使用一個名字等于這個注解名字的DataProvider
@Parameters 介紹如何將參數(shù)傳遞給測試方法

三、TestNG參數(shù)化測試

TestNG提供了2種傳遞參數(shù)的方式。

第一種: testng.xml

這種方式的優(yōu)點是使得代碼和測試數(shù)據分離,方便維護;缺點就是如果需要傳遞的參數(shù)不是基本的java類型,或是需要的值只能在運行時創(chuàng)建,這種方法就不再適用。

使用java+TestNG進行接口回歸測試

使用java+TestNG進行接口回歸測試

第二種:@DataProvider

這種能夠提供比較復雜的參數(shù)(也叫data-driven testing)。

我們項目中使用的是第二種

使用java+TestNG進行接口回歸測試

如圖示:首先給測試方法添加值為WithdrawBatchQueryLoopData的屬性dataProvider,然后提供一個name與之對應的@DataProvider方法,這個方法里的具體實現(xiàn),就是從配置文件或是數(shù)據庫中讀取數(shù)據。

四、TestNG分組測試

分組測試是TestNG中的創(chuàng)新功能,分組測試使得我們可以進行各種靈活的測試,在想要并行多組不同的測試時,不需要重新進行編譯。

使用java+TestNG進行接口回歸測試

分組可以應用在方法上(一個方法可以屬于一到多個分組),也可以應用在類上,應用在類上時,這個類中的所有public方法都變成測試方法,即便他們沒有被注解,也可以繼續(xù)在需要增加屬性的方法上重復@Test注解。分組執(zhí)行測試方法有多種形式:

可以通過在testng.xml配置,來指定具體要執(zhí)行的分組

使用java+TestNG進行接口回歸測試

也可以通過集成到jenkins中,通過參數(shù)化構建來設置要執(zhí)行的分組

使用java+TestNG進行接口回歸測試

還可以通過運行Run Configurations時,設置要執(zhí)行的分組

使用java+TestNG進行接口回歸測試

需要注意的一點:Group標簽會導致@BeforeMethod失效

@BeforeMethod的作用是標明所注解的方法在每一個測試方法運行之前會執(zhí)行一次。例如:

@BeforeMethod
Public void beforeMehod()
@Test
Public void testCase1()
@Test
Public void testCase2()

正常的執(zhí)行的順序為:beforeMehod—> testCase1—> beforeMehod—> testCase2

但是,在將testCase放入某一個Group之后,@BeforeMethod就失效了

@BeforeMethod
Public void beforeMehod()
@Test(groups = "group1")
Public void testCase1()
@Test(groups = "group1")
Public void testCase2()

再次執(zhí)行腳本,執(zhí)行順序變?yōu)閠estCase1—>testCase2

解決方法:

1、將@BeforeMethod同樣加入group1

2、設置@BeforeMethod的屬性alwaysRun=true

五、TestNG依賴測試

我們經常會遇到要測試的多個接口之間存在依賴關系,即某一個接口的執(zhí)行需要依賴上一個接口的返回結果,比如執(zhí)行批付查詢時,需要先執(zhí)行批量代付,那么這時就使用到了TestNG的依賴測試,TestNG使用dependsOnMethods配合alwaysRun來設置測試方法之間的依賴關系,使用dependsOnGroups來設置分組之間的依賴關系

使用java+TestNG進行接口回歸測試

  • 強依賴:在測試方法運行之前,所有的依賴方法都必須運行并且成功,哪怕只有一個失敗,測試方法都不會被調用(是skip而不是fail)

  • 軟依賴(alwaysRun=true):測試方法在依賴方法運行之后總是會被執(zhí)行,即便某些依賴方法運行失敗。

六、TestNG預期異常測試

測試中,有時候我們期望某些代碼拋出異常。

TestNG通過@Test(expectedExceptions) 來判斷期待的異常, 并且判斷Error Message

使用java+TestNG進行接口回歸測試

七、TestNG測試報告

執(zhí)行完測試用例之后,會在項目的test-output(默認目錄)下生成測試報告

打開index.html文件可以看到測試結果摘要,包括:套件名、測試用例成功數(shù)、測試用例失敗數(shù)、測試用例忽略數(shù)、執(zhí)行時間和testng.xml文件。

測試用例都成功的話,測試結果以綠底標志,測試用例有失敗的話,測試結果以紅底標志。testNG自帶生成的測試報告不太美觀,可以使用testng-xslt進行美化。

作者:王海燕

來源:宜信技術學院

向AI問一下細節(jié)

免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng)、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI