#Postman--介面測試工具Postman的使用
一、什麼是Postman?
Postman是google開發的一款功能強大的網頁除錯與傳送網頁HTTP請求,並能執行測試用例的的Chrome外掛。其主要功能包括:
(1)模擬各種HTTP requests
從常用的 GET、POST 到 RESTful 的 PUT 、 DELETE …等等。 甚至還可以傳送檔案、送出額外的 header。
(2)Collection 功能(測試集合)
Collection 是 requests的集合,在做完一個測試的時候, 你可以把這次的 request 存到特定的 Collection 裡面,如此一來,下次要做同樣的測試時,就不需要重新輸入。而且一個collection可以包含多條request,如果我們把一個request當成一個test case,那collection就可以看成是一個test suite。通過collection的歸類,我們可以良好的分類測試軟體所提供的API.而且 Collection 還可以 Import 或是 Share 出來,讓團隊裡面的所有人共享你建立起來的 Collection。
(3)人性化的Response整理
一般在用其他工具來測試的時候,response的內容通常都是純文字的 raw, 但如果是 JSON ,就是塞成一整行的 JSON。這會造成閱讀的障礙 ,而 Postman 可以針對response內容的格式自動美化。 JSON、 XML 或是 HTML 都會整理成我們可以閱讀的格式
(4)內建測試指令碼語言
Postman支援編寫測試指令碼,可以快速的檢查request的結果,並返回測試結果
(5)設定變數與環境
Postman 可以自由 設定變數與Environment,一般我們在編輯request,校驗response的時候,總會需要重複輸入某些字元,比如url,postman允許我們設定變數來儲存這些值。並且把變數儲存在不同的環境中。比如,我們可能會有多種環境, development 、 staging 或 local, 而這幾種環境中的 request URL 也各不相同,但我們可以在不同的環境中設定同樣的變數,只是變數的值不一樣,這樣我們就不用修改我們的測試指令碼,而測試不同的環境。
二、安裝Postman
(1)下載Postman,下載路徑:http://files.cnblogs.com/files/mafly/postman-4.1.2.rar
(2)開啟谷歌瀏覽器,選擇“更過工具”->“擴充套件程式”->“載入已解壓的擴充套件程式”->選擇已解壓好的Postman安裝目錄->啟用,選擇左下方“電腦狀態鍵”->“所有程式”->“Chrome 應用”下的Postman,啟動之。
三、使用說明
(1)最常見的是get請求,例如:
測試介面:
@ResponseBody @RequestMapping("/hello.action")//未顯示宣告請求型別時為GET請求 public String hello(HttpServletResponse response, HttpServletRequest request) throws Exception { String userid = request.getHeader("userid"); System.out.println("userid:"+userid); if(userid == null){ throw new Exception("This is a exception"); } return "hello world!"; }
(2)帶入參的Get請求
測試介面:
@ResponseBody
@RequestMapping("/testInfo.action")
public String testInfo(HttpServletRequest request,@RequestParam("username") String username) throws Exception {
System.out.println("username:"+username);
if(userid == null){
throw new Exception("This is a exception");
}
return "this is a request of testInfo.action";
}
對於get請求的入參,我們可以使用@RequestParam註解來接收入參值。
(3)Postman中Headers傳參與後臺處理
如果是對於使用者請求,通常Headers傳參用於使用者唯一識別符號,請求傳入了它伺服器才會對請求作出響應。我們可以先在Postman中傳入headers引數:
在後臺介面中可以使用request的getHeader(引數)來獲取header引數值,例如:
@ResponseBody
@RequestMapping("/testInfo.action")
public String testInfo(HttpServletRequest request,@RequestParam("username") String username) throws Exception {
String userid = request.getHeader("userid");
System.out.println("userid:"+userid);
System.out.println("username:"+username);
if(userid == null){//header引數檢查
throw new Exception("This is a exception");
}
return "this is a request of testInfo.action";
}
(4)post請求
對於post請求,我們既可以傳入引數,也可以不傳入引數:
對應介面為:
@ResponseBody
@RequestMapping(value="/testPostInfo.action",method={RequestMethod.POST})
public String testPostInfo(HttpServletRequest request,@RequestParam("username") String username) throws Exception {
String userid = request.getHeader("userid");
System.out.println("userid:"+userid);
System.out.println("username:"+username);
if(userid == null){
throw new Exception("This is a exception");
}
return "this is a request of testPostInfo.action";
}
(5)技巧
A.傳json資料時,需要選擇post方式且Headers中需要傳入Content-Type: application/json,在body一欄選中raw。
B.list用[]表示,物件使用{}表示,map用{key:value}來表示。
C.常見錯誤及其原因:
400:400-錯誤的請求。一般是需要傳參的URL的傳參不完整或沒有傳參。例如,如果username引數沒有傳,那麼就會報告HTTP Status 400 - Required String parameter ‘username’ is not present類似的錯誤。
404:後臺沒有這個方法或者前臺url傳輸錯誤不匹配,會報告一個名為HTTP Status 404的錯誤。
405:用來訪問本頁面的HTTP謂詞不被允許(方法不被允許),例如,後臺的POST方法使用GET方式進行請求,會獲得一個名為HTTP Status 405 - Request method ‘GET’ not supported。
500:後臺邏輯有問題。