TestNG學習隨筆
轉載自:http://blog.sina.com.cn/s/blog_68f262210102vh5c.html
通過本人實踐,文中所講的程序可以正確運行,作用正確,並且淺顯易懂。以下就是我從中摘錄的重要知識點,就當留作自己記錄或者幫助其他想學TestNG的人一點借鑒吧!若其中有哪裏不正確,請留言指出,謝謝!~另外,如若有侵權的地方,請聯系本人,得到通知後立刻撤下,再次感謝!~
一、TestNG簡介
這個網上一搜一大堆,這裏就不細說了。官方定義:TestNG是一個測試框架,其靈感來自JUnit和NUnit,但引入了一些新的功能,使其功能更強大,使用更方便。
二、為什麽使用TestNG
這個我覺得就沒必要說了,大家既然能看到這篇博客,說明就已經打算使用TestNG了,總之就是優點多多 -_-
三、TestNG的配置
已經確定使用TestNG了,那現在就開始配置它吧。
首先,需要明確的是,我使用的是Eclipse
1.安裝TestNG插件
在Eclipse中點擊help-->install new software...
然後,點擊add按鈕,輸入Name(內容隨意填寫)和Location(填寫http://beust.com/eclipse),點擊ok
選中加載出來的TestNG選項,然後一路Next
最後,來驗證一下是否已經成功安裝TestNG。大家可以新建一個工程,然後點擊file-->new-->Other,看看裏面有沒有TestNG的選項,如果有,就說明已經成功安裝了。
2.準備相關jar包(註意:版本號可以不一致,但是盡量使用最新的jar包)
四、編寫測試用例
終於到了最期待的環節了。。。
1.新建一個java project,並且將上面下載的相關jar包附加到工程中
2.規範代碼
<1>CommonFunction:裏面用於存放所有的共用函數;方便之後所有的測試用例來調用,此包中的代碼需要專人來維護,用作工具包
<2>TestCases:裏面用於存放具體的測試用例;用於測試
<3>TestData:裏面用於存放測試數據,裏面的文件均為xml格式
<4>testng.xml:用於組織測試用例,以及進行相關設置
<5>lib:用於存放saxon-8.7.jar,後面會進行說明,此處可以忽略,後面會講到
<6>build.xml:裏面是為了對testNG測試報告進行二次加工,此處可以忽略,後面會講到
3.創建TestNG文件
new-->Other-->TestNG,選擇@BeforeTest、@AfterTest,並且在XML suite file:處填寫testng.xml,點擊finish
4.編寫測試代碼
寫完後,右鍵HelloWorld.class文件,點擊run as-->TestNG Test。
運行結果是:
這段代碼主要是為了了解在程序運行過程中,@BeforeTest、@AfterTest這些方法先後的執行順序,當然,除了這些Annotations,還有其他的,在這裏,我們先介紹這兩個,有興趣的朋友可以在新建TestNG文件時,在Annotations裏的方法全部選中,運行一遍,試試看效果如何。
我們通常吧變量定義或者是對測試用例的前置操作放到beforeTest()函數中,而對測試產生的數據清除或是關閉瀏覽器等操作放到afterTest()函數中。
以上編寫的測試用例僅僅只是最簡單的測試用例,如果我們想結合瀏覽器,實現自動打開瀏覽器,輸入指定的網址,進行指定的操作,則就需要用到WebDriver,下面,我們繼續對這個測試用例進行編輯。
我們把剛才f()方法裏的System.out.println("Hello World!");語句註釋掉,寫下如下代碼:
上邊代碼的意思是:打開火狐瀏覽器,輸入百度網址,跳轉到百度暫停5秒後關閉瀏覽器。
需要註意的是,如果僅僅輸入上面的語句,是會報一個關於“geckodriver”的錯誤的,此時,我們需要在網上下載一個geckodriver.zip包,下載下來解壓後,得到一個geckodriver.exe文件,在WebDriver driver = new FirefoxDriver();前面加入如下代碼:
其中,第一句中方法的第二個參數寫入的是你存放geckodriver.exe的目錄位置,註釋掉的語句則分別代碼打開的瀏覽器不同(IE和Chrome),此時,再次運行程序,則不會看到報錯信息了。
註意:如果你使用火狐瀏覽器,仍報錯,則下載安裝一個54.0版本的火狐瀏覽器,再重新試一下。
此時,我們已經完成了TestNG的最基本的使用!下面,我們將會再這個基礎上,再深入一點繼續學習!
五、TestNG進階
在學習後面的內容之前,請先學習了解一下另外一篇文章裏的內容:http://www.cnblogs.com/zhangfei/archive/2012/10/09/2717043.html
而我們則是通過讀取TestData下的文件(HelloWorld.xml)來使用@DataProvider傳遞數據
1.首先,我們先在CommonFunction包中新建DataProvide.java文件,裏面代碼如下:
裏面init方法的意思就是傳入一個文件名,然後通過這個方法,把這個xml文件轉化為一個dom文件,並返回給一個document對象。而providerMethod方法的意思則是為後面使用者提供數據,其中需要註意的是,方法前面必須使用@DataProvider註明,如果不寫後面括號裏的內容也可以,系統默認name值為方法名。method則代表調用providerMethod這個方法的當前方法。只要是被DataProvider標明的方法,都必須有一個Object[][]的返回值,而此處返回了一個Document對象。
2.其次,我們仍在CommonFunction包中新建另外一個java文件---DataReader.java,裏面的代碼如下:
其中,readnodevalue方法的作用就是根據傳入的document對象、firsttag、secondtag,來得到最終指定節點裏面的文本內容。
3.再次,在TestData中新建HelloWorld.xml文件,裏面代碼如下:
我們最終要得到的就是“Webdriver”這個內容。
4.最後,我們修改HelloWorld.java文件
這個文件中,需要註意的是,在f()方法前面,我們加上了@Test(dataProvider="Test_xml_dataprovider"),代表接收name為Test_xml_dataprovider的DataProvider提供過來的數據;在f()方法也變為了f(Document params);WebDriver相關的操作應該也都可以看懂吧?先在beforeTest函數中解析HelloWorld.xml文件,然後再打開了火狐瀏覽器,進入百度頁面,根據ID先找到百度的輸入框,然後點擊這個輸入框,調用readnodevalue方法,得到“WebDriver”這個文本,填寫到輸入框中,等待2秒後點擊搜索,再等待5秒,檢查搜索結果中是否有和搜索內容一致的文本,最後在afterTest函數中退出瀏覽器。
5.最最後,testng.xml的編寫
常用的參數:
詳細講解,請參考:http://www.cnblogs.com/choosewang/articles/3079983.html,而各個參數的具體取值及結構,可以參考:http://testng.org/testng-1.0.dtd.php。
默認Testng的樣子
<1>Suite name 標識測試集的名字,這個名字會在測試報告中顯示。
<2>Suite parallel 是否並行運行測試用例,這個在多線程中會用到,false 為不允許多線程。
<3>Test name 測試工程的名字,一個測試工程可以包含多個測試類,一個測試類中可以包含多個測試方法。
<4>通常我們添加測試方法的辦法是添加 classes 節點,當然也可以添加更多的測試工程和測試集。
哪些測試方法需要執行和哪些測試方法不需要執行:
詳細的Testng.xml節點,請參考:http://blog.csdn.net/five3/article/details/25907693
我們現在的Testng.xml代碼如下:
當然,需要在TestCases包下再新建幾個java文件(HelloTom,HelloJim,HelloCate),裏面的方法可以參考如下代碼:
至此,我們可以右擊testng.xml-->run as-->run configurations,在Test標簽裏選擇Suite,並且選中自己新建的Testng.xml文件,點擊run,即可開始測試。
運行的測試報告在測試代碼的根目錄下生成一個test-output,裏面有一個index.html,可以查看,但是很不美觀,不利於查看,所以我們需要利用第三方 TestNG-xslt優化一下測試報告。
<1>下載TestNG-xslt並把其中的saxon-8.7.jar復制到測試項目lib下(此處就是文章開頭介紹目錄時提到的lib目錄),並附加到工程中
<2>從你下載的包中拷貝文件 testng-results.xsl 到 test-output 目錄下。testng-results.xsl 文件的位置是testng-xslt-1.1.1/src/main/resources
<3>新建build.xml文件(文章開頭提到的),裏面代碼如下:
<4>右擊build.xml,點擊run as-->External Tools Configurations,在Targets標簽裏勾選transfo...,點擊run
此時,再次點擊test-output下的index.html,就會看到美觀的報告啦!!!
5.此時,最終效果達成了!~
TestNG學習隨筆