------Web自動化測試之Webdriver+TestNG--從零到熟練(系列)php
在作頁面自動化測試的時候,有不少語言和框架能夠選擇,如語言有java,python,php,而框架有各類unittest框架,TestNG框架等等。先前咱們介紹過WebDriver+python作頁面自動化的教程,小夥伴們的熱情挺高,博客訪問量暴漲。前端
那麼問題就來了,有的同窗開始學習的就是python,這樣就比較容易上手,而有些兒同窗學習的是java,也想學習自動化測試。WebDriver+java作頁面自動也很是方便,下面咱們就開始介紹,在TestNG框架下使用WebDriver+java來作頁面自動測試。java
既然要用TestNG來作自動化測試,咱們就須要先了解一下什麼是TestNG?python
TestNG按照其文檔的定義是:web
TestNG是一個測試框架,其靈感來自JUnit和NUnit的,但引入了一些新的功能,使其功能更強大,使用更方便。數據庫
TestNG是一個開源自動化測試框架;TestNG表示下一代。 TestNG是相似於JUnit(特別是JUnit 4),但它不是一個JUnit擴展。它的靈感來源於JUnit。它的目的是優於JUnit的,尤爲是當測試集成的類。 TestNG的創造者是Cedric Beust(塞德里克·博伊斯特)編程
TestNG消除了大部分的舊框架的限制,使開發人員可以編寫更加靈活和強大的測試。 由於它在很大程度上借鑑了Java註解(JDK5.0引入的)來定義的測試,它也能夠告訴你如何使用這個新功能在真實的Java語言生產環境中。多線程
TestNG的特色主要集中在如下幾點:框架
Ø 註解。ide
Ø TestNG使用Java和麪向對象的功能。
Ø 支持綜合類測試(例如,默認狀況下,沒有必要建立一個新的測試每一個測試方法的類的實例)。
Ø 獨立的編譯時間測試代碼運行時配置/數據信息。
Ø 靈活的運行時配置。
Ø 主要介紹「測試組」。當編譯測試,只要問TestNG運行全部的「前端」的測試,或「快」,「慢」,「數據庫」等。
Ø 支持依賴測試方法,並行測試,負載測試,局部故障。
Ø 靈活的插件API。
Ø 支持多線程測試。
傳統的方式來表示JUnit 3中的測試方法是測試本身的名字前綴。標記一個類中的某些方法,具備特殊的意義,這是一個很是有效的方法,但命名不很好的擴展(若是咱們想添加更多標籤爲不一樣的框架?),而非缺少靈活性(若是咱們要經過額外的參數測試框架)。註釋被正式加入到JDK 5中的Java語言和TestNG做出選擇使用註釋註釋測試類。
這裏是TestNG的支持列表中的註解:
(1)@BeforeSuite
註解的方法將只運行一次,運行全部測試前此套件中。
(2)@AfterSuite
註解的方法將只運行一次此套件中的全部測試都運行以後。
(3)@BeforeClass
註解的方法將只運行一次先行先試在當前類中的方法調用。
(4)@AfterClass
註解的方法將只運行一次後已經運行在當前類中的全部測試方法。
(5)@BeforeTest
註解的方法將被運行以前的任何測試方法屬於內部類的 標籤的運行。
(6)@AfterTest
註解的方法將被運行後,全部的測試方法,屬於內部類的標籤的運行。
(7)@BeforeGroups
組的列表,這種配置方法將以前運行。此方法是保證在運行屬於任何這些組第一個測試方法,該方法被調用。
(8)@AfterGroups
組的名單,這種配置方法後,將運行。此方法是保證運行後不久,最後的測試方法,該方法屬於任何這些組被調用。
(9)@BeforeMethod
註解的方法將每一個測試方法以前運行。
(10)@AfterMethod
被註釋的方法將被運行後,每一個測試方法。
(11)@DataProvider
標誌着一個方法,提供數據的一個測試方法。註解的方法必須返回一個Object[] [],其中每一個對象[]的測試方法的參數列表中能夠分配。
該@Test 方法,但願從這個DataProvider的接收數據,須要使用一個dataProvider名稱等於這個註解的名字。
(12)@Factory
做爲一個工廠,返回TestNG的測試類的對象將被用於標記的方法。該方法必須返回Object[]。
(13)@Listeners
定義一個測試類的監聽器。
(14)@Parameters
介紹如何將參數傳遞給@Test方法。
(15)@Test
標記一個類或方法做爲測試的一部分。
使用註釋的好處:
Ø TestNG的標識的方法關心尋找註解。所以,方法名並不限於任何模式或格式。
Ø 咱們能夠經過額外的參數註解。
Ø 註釋是強類型的,因此編譯器將標記任何錯誤。
Ø 測試類再也不須要任何東西(如測試案例,在JUnit3)擴展。
作頁面自動化不可能不知道WebDriver,也就是咱們常說的Selenium2.0。Selenium 2.0主要的特性就是與WebDriver API的集成。WebDriver旨在提供一個更簡單,更簡潔的編程接口以及解決一些Selenium-RC API的限制。Selenium-Webdriver更好的支持頁面自己不從新加載而頁面的元素改變的動態網頁。WebDriver的目標是提供一個良好設計的面向對象的API,提供了對於現代先進web應用程序測試問題的改進支持。
WebDriver經過大量的API函數來模擬用戶操做,從而組合各類測試用例。對於其基本原理在此就很少講了,針對不一樣的腳本語言,WebDriver提供了不一樣的API,不過大體是相通的,後面咱們將具體講述.
本章咱們介紹了TestNG框架的相關知識點,TestNG框架能夠很好地幫咱們完成WebDriver+java的頁面自動化工做。經過各類註釋的靈活運行,可使你的測試用例更加完美,定製符合要求的測試用例。最後咱們簡單地介紹了一下WebDriver,這個是作自動化測試的同窗很是熟悉的。從Selenium1.0然後升級到WebDriver,框架功能愈來愈強,咱們的自動化測試工做也就變的至關來講容易了許多。加上這個框架是開源的,咱們可對其進行二次開發,開發出符合咱們需求的自動化測試工具。