零成本實現接口自動化測試 – Java+TestNG 測試Restful service

jopen 9年前發布 | 144K 次閱讀 測試 測試工具

本文主要介紹如何用Java針對Restful web service 做接口自動化測試(數據驅動),相比UI自動化,接口自動化穩定性可靠性高,實施難易程度低,做自動化性價比高。所用到的工具或類庫有 TestNG, Apache POI, Jayway rest-assured,Skyscreamer - JSONassert

 

簡介:

思想是數據驅動測試,用Excel來管理數據,‘Input’ Sheet中存放輸入數據,讀取數據后拼成request 調用service, 拿到response后寫入 ‘Output’ Sheet 即實際結果, ‘Baseline’為基線(期望結果)用來和實際結果對比的,‘Comparison’ Sheet里存放的是對比結果不一致的記錄,‘Result’ Sheet 是一個簡單的結果報告。

 

Maven工程目錄結構:

 零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 

詳細介紹

核心就一個測試類HTTPReqGenTest.java 由四部分組成

@BeforeTest  讀取Excel (WorkBook) 的 ‘Input’ 和 ‘Baseline’ sheet

 零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 

零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 

并且新建‘Output’, ‘Comparison’, ‘Result’ 三個空sheet

 

讀取http_request_template.txt 內容轉成string

 零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 

@DataProvider (name = "WorkBookData")

TestNG的DataProvider, 首先用DataReader構造函數,讀取Excel中Input的數據,放入HashMap<String, RecordHandler>, Map的key值就是test case的ID,value是RecordHandler對象,此對象中一個重要的成員屬性就是input sheet里面 column和value 的鍵值對,遍歷Map將test case ID 與 test case的value 即input sheet前兩列的值放入List<Object[]> ,最后返回List的迭代器iterator (為了循環調用@Test方法)

 

@Test (dataProvider = "WorkBookData", description = "ReqGenTest")

測試方法,由DataProvider提供數據,首先根據ID去取myInputData里的RecordHandler, 由它和template 去生成request, 然后執行request 返回response,這些工作都是由HTTPReqGen.java這個類完成的,借助com.jayway.restassured, 返回的response是一個JSON體,通過org.skyscreamer.jsonassert.JSONCompare 與Baseline中事先填好的期望結果(同樣也是JSON格式)進行比較, 根據結果是Pass還是Fail, 都會相應的往Excel里的相應Sheet寫結果。

 

@AfterTest

寫入統計的一些數據

關閉文件流

 

實現代碼:

 HTTPReqGenTest.java

零成本實現接口自動化測試 – Java+TestNG 測試Restful service View Code

 

DataReader

零成本實現接口自動化測試 – Java+TestNG 測試Restful service View Code

 

HTTPReqGen

零成本實現接口自動化測試 – Java+TestNG 測試Restful service View Code

 

RecordHandler

零成本實現接口自動化測試 – Java+TestNG 測試Restful service View Code

 

其它不重要的類不一一列出來了。

 

pom.xml

零成本實現接口自動化測試 – Java+TestNG 測試Restful service View pom.xml

 

運行是通過TestNG的xml文件來執行的, 里面配置了Parameter “workBook” 的路徑

 零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 

TestNG的運行結果都是Pass, 但事實上里面有case是Fail的,我只是借助TestNG來運行,我并沒有在@Test方法里加斷言Assert, 所以這里不會Fail, 我的目的是完全用Excel來管理維護測試數據以及測試結果,做到數據腳本完全分離。

 零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 

Output sheet

零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 

Comparison sheet

零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 

Result sheet

 零成本實現接口自動化測試 – Java+TestNG 測試Restful service

 

當然 你也可以把maven工程打成一個可執行jar來運行,不過需要增加一個main函數作為入口,xml測試文件通過參數傳遞進去,另外還需要在pom里配置一些插件,像maven-jar-plugin。

如果你還需要做back-end DB check,你可以在Input里再增加幾列,你要查詢的表,字段,Baseline里也相應的加上期望結果,這里就不再贅述了。

 來自:http://www.cnblogs.com/wade-xu/p/4229805.html

 本文由用戶 jopen 自行上傳分享,僅供網友學習交流。所有權歸原作者,若您的權利被侵害,請聯系管理員。
 轉載本站原創文章,請注明出處,并保留原始鏈接、圖片水印。
 本站是一個以用戶分享為主的開源技術平臺,歡迎各類分享!