------Web自動化測試之Webdriver+TestNG--從零到熟練(系列)
在做頁面自動化測試的時候,有很多語言和框架可以選擇,如語言有java,python,php,而框架有各種unittest框架,TestNG框架等等。先前我們介紹過WebDriver+python做頁面自動化的教程,小伙伴們的熱情挺高,博客訪問量暴漲。
那么問題就來了,有的同學開始學習的就是python,這樣就比較容易上手,而有些兒同學學習的是java,也想學習自動化測試。WebDriver+java做頁面自動也非常方便,下面我們就開始介紹,在TestNG框架下使用WebDriver+java來做頁面自動測試。
1.1 TestNG簡介
既然要用TestNG來做自動化測試,我們就需要先了解一下什么是TestNG?
TestNG按照其文檔的定義是:
TestNG是一個測試框架,其靈感來自JUnit和NUnit的,但引入了一些新的功能,使其功能更強大,使用更方便。
TestNG是一個開源自動化測試框架;TestNG表示下一代。 TestNG是類似於JUnit(特別是JUnit 4),但它不是一個JUnit擴展。它的靈感來源於JUnit。它的目的是優於JUnit的,尤其是當測試集成的類。 TestNG的創造者是Cedric Beust(塞德里克·博伊斯特)
TestNG消除了大部分的舊框架的限制,使開發人員能夠編寫更加靈活和強大的測試。 因為它在很大程度上借鑒了Java注解(JDK5.0引入的)來定義的測試,它也可以告訴你如何使用這個新功能在真實的Java語言生產環境中。
1.2 TestNG的特點
TestNG的特點主要集中在以下幾點:
Ø 注解。
Ø TestNG使用Java和面向對象的功能。
Ø 支持綜合類測試(例如,默認情況下,沒有必要創建一個新的測試每個測試方法的類的實例)。
Ø 獨立的編譯時間測試代碼運行時配置/數據信息。
Ø 靈活的運行時配置。
Ø 主要介紹“測試組”。當編譯測試,只要問TestNG運行所有的“前端”的測試,或“快”,“慢”,“數據庫”等。
Ø 支持依賴測試方法,並行測試,負載測試,局部故障。
Ø 靈活的插件API。
Ø 支持多線程測試。
1.3 TestNG的注釋
傳統的方式來表示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)擴展。
1.4 WebDriver簡介
做頁面自動化不可能不知道WebDriver,也就是我們常說的Selenium2.0。Selenium 2.0主要的特性就是與WebDriver API的集成。WebDriver旨在提供一個更簡單,更簡潔的編程接口以及解決一些Selenium-RC API的限制。Selenium-Webdriver更好的支持頁面本身不重新加載而頁面的元素改變的動態網頁。WebDriver的目標是提供一個良好設計的面向對象的API,提供了對於現代先進web應用程序測試問題的改進支持。
WebDriver通過大量的API函數來模擬用戶操作,從而組合各種測試用例。對於其基本原理在此就不多講了,針對不同的腳本語言,WebDriver提供了不同的API,不過大致是相通的,后面我們將具體講述.
1.5 本章小結
本章我們介紹了TestNG框架的相關知識點,TestNG框架可以很好地幫我們完成WebDriver+java的頁面自動化工作。通過各種注釋的靈活運行,可以使你的測試用例更加完美,定制符合要求的測試用例。最后我們簡單地介紹了一下WebDriver,這個是做自動化測試的同學非常熟悉的。從Selenium1.0而后升級到WebDriver,框架功能越來越強,我們的自動化測試工作也就變的相當來說容易了許多。加上這個框架是開源的,我們可對其進行二次開發,開發出符合我們需求的自動化測試工具。