使用java+TestNG進行介面迴歸測試
TestNG是一個開源自動化測試框架,“NG”表示下一代(Next Generation的首字母)。 TestNG類似於JUnit(特別是JUnit 4),但它不是JUnit框架的擴充套件,相較於Junit而言,功能更強大,使用起來更加方便,比較適合測試人員來進行整合測試或是介面迴歸測試。
一、TestNG的特點
-
使用java和麵向物件的功能
-
方法的名稱就不必受限於某種固定的格式,可以透過註釋來識別需要執行的方法;
-
方法中需要的一些引數可以透過註釋傳遞;
-
註釋是強型別的,所以有錯誤可以在編譯期體現出來;
-
支援分組測試,依賴測試,並行測試,負載測試等
-
支援多執行緒測試
二、TestNG常用的註釋型別
註釋 | 描述 |
---|---|
@Test | 將類或是方法標記為測試的一部分 |
@BeforeSuite | 在該套件的所有測試都執行在註釋的方法之前,僅執行一次。 |
@AfterSuite | 在該套件的所有測試都執行在註釋的方法之後,僅執行一次 |
@BeforeClass | 在呼叫當前類的所有測試方法之前執行,註釋方法僅執行一次 |
@AfterClass | 在呼叫當前類的所有測試方法之後執行,註釋方法僅執行一次 |
@BeforeTest | 註釋的方法將在屬於標籤內的類的所有測試方法執行之前執行 |
@AfterTest | 註釋的方法將在屬於標籤內的類的所有測試方法執行之後執行。 |
@BeforeGroups | 此方法是保證在執行屬於任何這些組的第一個測試方法之前,該方法被呼叫 |
@AfterGroups | 此方法是保證執行屬於任何這些組的所有測試方法執行之後,該方法被呼叫 |
@BeforeMethod | 被註釋的方法將在每個測試方法之前執行 |
@AfterMethod | 被註釋的方法將在每個測試方法之後執行 |
@DataProvider | 被註釋的方法的作用是提供測試資料,如果某個測試方法希望從這個DataProvider接收資料,就必須使用一個名字等於這個註解名字的DataProvider |
@Parameters | 介紹如何將引數傳遞給測試方法 |
三、TestNG引數化測試
TestNG提供了2種傳遞引數的方式。
第一種: testng.xml
這種方式的優點是使得程式碼和測試資料分離,方便維護;缺點就是如果需要傳遞的引數不是基本的java型別,或是需要的值只能在執行時建立,這種方法就不再適用。
第二種:@DataProvider
這種能夠提供比較複雜的引數(也叫data-driven testing)。
我們專案中使用的是第二種
如圖示:首先給測試方法新增值為WithdrawBatchQueryLoopData的屬性dataProvider,然後提供一個name與之對應的@DataProvider方法,這個方法裡的具體實現,就是從配置檔案或是資料庫中讀取資料。
四、TestNG分組測試
分組測試是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
解決方法:
1、將@BeforeMethod同樣加入group1
2、設定@BeforeMethod的屬性alwaysRun=true
五、TestNG依賴測試
我們經常會遇到要測試的多個介面之間存在依賴關係,即某一個介面的執行需要依賴上一個介面的返回結果,比如執行批付查詢時,需要先執行批次代付,那麼這時就使用到了TestNG的依賴測試,TestNG使用dependsOnMethods配合alwaysRun來設定測試方法之間的依賴關係,使用dependsOnGroups來設定分組之間的依賴關係
-
強依賴:在測試方法執行之前,所有的依賴方法都必須執行並且成功,哪怕只有一個失敗,測試方法都不會被呼叫(是skip而不是fail)
-
軟依賴(alwaysRun=true):測試方法在依賴方法執行之後總是會被執行,即便某些依賴方法執行失敗。
六、TestNG預期異常測試
測試中,有時候我們期望某些程式碼丟擲異常。
TestNG透過@Test(expectedExceptions) 來判斷期待的異常, 並且判斷Error Message
七、TestNG測試報告
執行完測試用例之後,會在專案的test-output(預設目錄)下生成測試報告
開啟index.html檔案可以看到測試結果摘要,包括:套件名、測試用例成功數、測試用例失敗數、測試用例忽略數、執行時間和testng.xml檔案。
測試用例都成功的話,測試結果以綠底標誌,測試用例有失敗的話,測試結果以紅底標誌。testNG自帶生成的測試報告不太美觀,可以使用testng-xslt進行美化。
作者:王海燕
來源:
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69918724/viewspace-2648677/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 使用 MeterSphere 進行 Dubbo 介面測試
- 使用Jmeter進行http介面測試JMeterHTTP
- Python機器學習筆記:使用Keras進行迴歸預測Python機器學習筆記Keras
- 利用Junit4進行程式模組的測試,迴歸測試行程
- 介面測試怎麼進行,如何做好介面測試
- 詳解迴歸測試
- 迴歸測試總結
- postman進行http介面測試PostmanHTTP
- postman工具進行介面測試Postman
- 【2】使用MATLAB進行機器學習(迴歸)Matlab機器學習
- 我的測試之旅:(4)並行——自動化迴歸測試並行
- 軟體測試學習教程—迴歸測試
- 軟體迴歸測試常用方法有哪些?迴歸測試報告收費貴嗎?測試報告
- 線性迴歸-如何對資料進行迴歸分析
- 使用 EOLINKER 進行介面測試的最佳路徑 (下)
- 使用抓包工具fiddler和apipost進行介面測試API
- 使用抓包工具 fiddler 和 apipost 進行介面測試API
- 使用 HTTPie 進行 API 測試HTTPAPI
- 使用PostMan進行API測試PostmanAPI
- 真的要進行介面測試自動化?
- 閃迴歸檔的簡單測試
- 迴歸測試的四個步驟
- 迴歸測試遇到的問題求助
- 請教各位,一般寫介面,線上上想做迴歸測試的話,如何進行呢
- 使用Tcl擴充套件包cwind進行介面自動化測試套件
- 介面測試進階篇
- 使用JUnit進行單元測試
- 使用Wiremock進行整合測試 - kubilayREMMock
- 【java】使用jprofiler進行效能測試Java
- 介面測試的時候如何生成隨機資料進行測試隨機
- 使用最小二乘法進行線性迴歸(Python)Python
- 使用 Python 在 Linux 上實現一鍵迴歸測試PythonLinux
- python+requests進行get、post方法介面測試Python
- python+requests 進行 get、post 方法介面測試Python
- 如何基於eoLinker進行API介面測試工作API
- 測試環境的最後一測,需要進行全量回歸嗎?
- 使用遠端Docker進行整合測試Docker
- 使用Jest進行React單元測試React