TestNG是一個開源自動化測試框架,TestNG表示下一代(Next Generation的首字母)。 TestNG相似於JUnit(特別是JUnit 4),但它不是JUnit框架的擴展,相較於Junit而言,功能更強大,使用起來更加方便,比較適合測試人員來進行集成測試或是接口迴歸測試。html
描述java
@Test數據庫
將類或是方法標記爲測試的一部分多線程
@BeforeSuite框架
在該套件的全部測試都運行在註釋的方法以前,僅運行一次。ide
@AfterSuiteoop
在該套件的全部測試都運行在註釋的方法以後,僅運行一次測試
@BeforeClassui
在調用當前類的全部測試方法以前執行,註釋方法僅運行一次spa
@AfterClass
在調用當前類的全部測試方法以後執行,註釋方法僅運行一次
@BeforeTest
註釋的方法將在屬於<test>標籤內的類的全部測試方法運行以前運行
@AfterTest
註釋的方法將在屬於<test>標籤內的類的全部測試方法運行以後運行。
@BeforeGroups
此方法是保證在運行屬於任何這些組的第一個測試方法以前,該方法被調用
@AfterGroups
此方法是保證運行屬於任何這些組的全部測試方法執行以後,該方法被調用
@BeforeMethod
被註釋的方法將在每一個測試方法以前執行
@AfterMethod
被註釋的方法將在每一個測試方法以後執行
@DataProvider
被註釋的方法的做用是提供測試數據,若是某個測試方法但願從這個DataProvider接收數據,就必須使用一個名字等於這個註解名字的DataProvider
@Parameters
介紹如何將參數傳遞給測試方法
TestNG提供了2種傳遞參數的方式。
第一種: testng.xml 這種方式的優勢是使得代碼和測試數據分離,方便維護;缺點就是若是須要傳遞的參數不是基本的java類型,或是須要的值只能在運行時建立,這種方法就再也不適用。
第二種:@DataProvider 這種可以提供比較複雜的參數(也叫data-driven testing)。
咱們項目中使用的是第二種
如圖示:首先給測試方法添加值爲WithdrawBatchQueryLoopData的屬性dataProvider,而後提供一個name與之對應的@DataProvider方法,這個方法裏的具體實現,就是從配置文件或是數據庫中讀取數據。
分組測試是TestNG中的創新功能,分組測試使得咱們能夠進行各類靈活的測試,在想要並行多組不一樣的測試時,不須要從新進行編譯。
分組能夠應用在方法上(一個方法能夠屬於一到多個分組),也能夠應用在類上,應用在類上時,這個類中的全部public方法都變成測試方法,即使他們沒有被註解,也能夠繼續在須要增長屬性的方法上重複@Test註解。分組執行測試方法有多種形式:
能夠經過在testng.xml配置,來指定具體要執行的分組
也能夠經過集成到jenkins中,經過參數化構建來設置要執行的分組
還能夠經過運行Run Configurations時,設置要執行的分組
須要注意的一點:Group標籤會致使@BeforeMethod失效
@BeforeMethod的做用是標明所註解的方法在每個測試方法運行以前會執行一次。例如:
@BeforeMethod
Public void beforeMehod()
@Test
Public void testCase1()
@Test
Public void testCase2()
正常的執行的順序爲:beforeMehod—> testCase1—> beforeMehod—> testCase2
可是,在將testCase放入某一個Group以後,@BeforeMethod就失效了
@BeforeMethod
Public void beforeMehod()
@Test(groups = "group1")
Public void testCase1()
@Test(groups = "group1")
Public void testCase2()
再次執行腳本,執行順序變爲testCase1—>testCase2
解決方法:
一、將@BeforeMethod一樣加入group1
二、設置@BeforeMethod的屬性alwaysRun=true
咱們常常會遇到要測試的多個接口之間存在依賴關係,即某一個接口的執行須要依賴上一個接口的返回結果,好比執行批付查詢時,須要先執行批量代付,那麼這時就使用到了TestNG的依賴測試,TestNG使用dependsOnMethods配合alwaysRun來設置測試方法之間的依賴關係,使用dependsOnGroups來設置分組之間的依賴關係
強依賴:在測試方法運行以前,全部的依賴方法都必須運行而且成功,哪怕只有一個失敗,測試方法都不會被調用(是skip而不是fail)
軟依賴(alwaysRun=true):測試方法在依賴方法運行以後老是會被執行,即使某些依賴方法運行失敗。
測試中,有時候咱們指望某些代碼拋出異常。
TestNG經過@Test(expectedExceptions) 來判斷期待的異常, 而且判斷Error Message
執行完測試用例以後,會在項目的test-output(默認目錄)下生成測試報告
打開index.html文件能夠看到測試結果摘要,包括:套件名、測試用例成功數、測試用例失敗數、測試用例忽略數、執行時間和testng.xml文件。
測試用例都成功的話,測試結果以綠底標誌,測試用例有失敗的話,測試結果以紅底標誌。testNG自帶生成的測試報告不太美觀,可使用testng-xslt進行美化。