1.簡介
前面文章細心的小伙伴會發現宏哥在運行測試用例的時候有的是在main方法下,而有的不需要用main方法去執行用例,那么為什么有的就不需要在main方法下就能夠成功運行測試用例了。這就需要單元測試框架的支持,這篇宏哥就來簡單介紹TestNG單元測試框架的安裝和基本使用。
2.什么是testng?
TestNG按照官方的定義:TestNG是一個測試框架,其靈感來自JUnit和NUnit,但引入了一些新的功能,使其功能更強大,使用更方便。
TestNG是一個測試框架,它能覆蓋不同層級的測試,例如,單元測試,集成測試,端對端測試等。我們可以把Selenium和TestNG結合一起,在Eclipse中用Java寫TestNG腳本。
3.testng的特點
1)注釋,很多注釋提供
2)支持數據驅動測試(@DataProvider)
3)支持變量
4)自動生成測試報告
5)通過配置testng.xml,我們可以只執行測試失敗的用例
6)支持很多IDE工具(Eclipse等)
7)默認JDK支持監控運行和日志
8)獨立的程序服務器測試方法(API)
4.TestNG 、Junit和Nunit區別
1)三者都是獨立於測試框架,在市場上都可以免費得到。
2)TestNG和Junit在JAVA上使用,Nunit在C#上使用
3)Junit是Eclipse自帶工具,TestNG需要自己安裝插件
4)相對TestNG而言,Junit的注釋很少
5)Junit不能生成html格式報告,TestNG能生成豐富的html報告
其他對比就不講了,有興趣可以到各自官網去查看。
5.在Eeclipse中安裝testNG
在官網上部導航區域點擊“Download”鏈接,該頁面介紹了集成TestNG的不同方式。
在“Eclipse plug-in”區域介紹了兩種Eclipse安裝插件的方式。
硬性要求:JDK1.7以上版本、Eclipse4.2以上版本。
Java 1.7+ is required for running the TestNG for Eclipse plugin.
Eclipse 4.2 and above is required. Eclipse 3.x is NOT supported any more, please update your Eclipse to 4.2 or above.
兩種在線安裝方式:
5.1通過Eclipse Marketplace安裝
1)打開Eclipse Help ->MarketPlace,在搜索框里面輸入TestNG搜索,然后安裝TestNG插件。
2)點擊“Install”,稍等幾分鍾,等待插件下載
3)下載成功后,點擊“Confirm”,進行安裝(其中第二個Maven項目可選擇安裝也可以不安裝,但是宏哥建議都安裝上)
4)稍等一會等待安裝
5.2通過Update Site安裝
1) 通過update site也可以進行插件的安裝,方法是:在Eclipse中點擊Help菜單,選擇Install New Software選項,在彈出頁面中輸入安裝地址:http://beust.com/eclipse即可安裝。
5.3離線安裝TestNG插件
受網絡等因素影響,在線安裝方式速度比較慢,可以通過如下方式離線安裝TestNG插件。
1)通過testng下載網址找到插件下載地址,
2)瀏覽器直接訪問網址, http://beust.com/eclipse
3)選擇最下部的zipped文件夾鏈接;
4)選擇版本,如:“7.0.0.201908240652/”
5)點擊超鏈接,即可下載離線安裝文件。
6)解壓壓縮包,文件目錄如下圖所示。可以把features和plugins中的內容分別拷貝到eclipse對應文件夾;
或把解壓后的整個目錄拷貝到dropins中。
驗證是否安裝成功:

7) 不解壓文件,通過eclipse的Install new software安裝。
8)點擊Add,彈出Install Repository對話框,填寫Name,點擊“Archive”按鈕,選擇本地要安裝的Jar或者Zip文件,如下圖:
9)點擊OK,如下圖:
10)根據需求勾選上列表框中的安裝項,點擊“Next”,然后根據提示一直往下操作,直到Finish,這樣就完成了。
5.4驗證插件安裝是否成功
1)打開Eclipse,新建-other,選擇“TestNG——>TestNG Class”。
2)出現上邊截圖這個說明插件安裝成功。
至此環境搭建完成,可以開始寫測試的case了。
6..新建一個TestNG類
1)在一個包下,鼠標右鍵,New->other,點擊TestNG,然后選擇TestNG class,如下圖所示:
2)點擊Next,class name命名為:FirstTestNgClass,勾選Beforeclass和Afterclass,如下圖所示:
3)點擊“Finish”完成類的創建。
在BeforeClass中寫啟動瀏覽器腳本。在AfterClass中寫退出瀏覽器代碼,在@Test中寫我們測試腳本。記住,所有有關測試腳本,都需要寫到@Test下的方法,也就是說,你寫這個函數或者方法是關於測試腳本的,那么你就要在該方法前面加上@Test這個注釋,可以添加多個@Test的測試函數。
7.項目實戰
7.1代碼設計
宏哥把啟動瀏覽器和瀏覽器最大化放在了setup方法里,一般setup方法是寫一些用例的前置條件,而@Test注釋的方法才是我們測試腳本,afterClass方法里一般寫清除測試數據之類的操作,webUI自動化測試一般寫退出瀏覽器操作。
7.2參考代碼
package lessons; import org.openqa.selenium.By; import org.openqa.selenium.WebDriver; import org.openqa.selenium.chrome.ChromeDriver; import org.testng.annotations.Test; import org.testng.annotations.BeforeClass; import org.testng.annotations.AfterClass; /** * @author 北京-宏哥 * * @公眾號:北京宏哥 * * 《手把手教你》系列基礎篇(七十二)-java+ selenium自動化測試-框架設計基礎-TestNG簡單介紹(詳解教程) * * 2022年2月21日 */ public class FirstTestNgClass { WebDriver driver; @Test public void OpenBaidu() { driver.get("https://www.baidu.com"); driver.findElement(By.id("kw")).sendKeys("Selenium"); driver.findElement(By.id("su")).click(); } @BeforeClass public void beforeClass() { System.setProperty("webdriver.chrome.driver", ".\\Tools\\chromedriver.exe"); driver = new ChromeDriver(); driver.manage().window().maximize(); } @AfterClass public void afterClass() { try { Thread.sleep(2000); driver.quit(); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } } }
7.3運行代碼
1)運行代碼,右鍵Run AS->TestNG Test,控制台輸出,如下圖所示:
2)運行代碼后電腦端的瀏覽器的動作,如下小視頻所示:
8.測試報告
TestNG自帶測試報告,每次運行TestNG都會生成一個測試報告,你可以在運行結束后,右鍵你eclipse項目-刷新,然后就可以看到項目的根目錄下生成一個test-output的文件夾,你可以右鍵open with->Web Browser打開emailable-report.html,如下圖所示:
9.小結
好了,時間不早了,今天關於TestNG的安裝和簡單使用就介紹到這里,下面幾篇文章都會陸續介紹TestNG的使用,基本上這些使用我們在框架設計里都會涉及。