一、 安裝與更新
1、安裝的方式
安裝:首先下載安裝PostMan,打開PostMan官方網站,根據需求下載 Mac/Windows/Linux版本的Post應用程序,native版本(具有更好的擴展性,推薦使用):https://www.getpostman.com/
2、native app更新
步驟:File--->Settings--->Update--->Minor fixes
二、 Postman特點
創建 + 測試:創建和發送任何的HTTP請求,請求可以保存到歷史中再次執行;
Organize(組織):使用Postman Collections為更有效的測試及集成工作流管理和組織APIs;
document(文檔):依據你創建的Clollections自動生成API文檔,並將其發布成規范的格式;
collarorate(同步):通過同步連接你的team和你的api,以及權限控制,API庫;
三、發送api請求(V2EX API 接口:https://www.v2ex.com/p/7v9TEc53)
1、請求Request
HTTP請求的四個部分是URL,請求的method,headers,body;
(1)、URL
URL輸入字段存儲先前使用的URL,輸入URL時顯示自動完成下拉列表;
單擊 Params按鈕,可輸入URL添加鍵值對的參數,Postman將組合上述查詢字符串中的所有內容;
如果URL中已顯示參數,Postman會將自動分割成參數鍵值對;
注意:http://如果沒有指定協議, Postman將自動添加到URL的開頭;
注意:如果在輸入參數時,沒有自動decode到URL中,則可以選中參數右鍵后,選擇EncodeURIComponent(一般都會自動填充的),同樣也可以decode,將參數生成dictionary的形式(一般都會自動填充的);
(2)、Method:
使用控件下拉列表可以直接更改請求方法。請求Body編輯器區域將根據方法是否可以附加Body而改變;
(3)、Headers
單擊Headers將顯示標題鍵值編輯器。您可以將任何字符串設置為頭名稱。自動完成下拉列表將在您輸入字段時提供常見HTTP標頭的建議。“Content-Type”標題的值也可以在自動完成的下拉列表中使用;
Header presets:可以在標題預設中將常用標題保存在一起;Presets--》選擇“Manager presets”從頭預設添加到您的請求預設右側下拉列表;
(4)、Body
form-data:①、網頁表單用來傳輸數據的默認格式,可以模擬填寫表單,並且提交表單;
②、可以上傳一個文件作為key的value提交(如上傳文件),但該文件不會作為歷史保存,只能在每次需要發送請求的時候,重新添加;
③、不支持使用自己的Content-Type上載多個文件;
x-www-urlencodedl:①、urlencode中的key-value會寫入URL,from-data模式的key-value不明顯寫入URL,而是直接提交;
②、這個編碼格式不能上傳文件;
raw:①、原始請求可以包含任何內容,除了替換環境變量,PostMan不會觸及在原始編輯器中輸入的字符串;
②、原始編輯器可設置格式化類型(Text、JavaScript、JSON、HTML、XML);
③、選擇格式化類型后,點擊“Beautify”進行格式化;
binary:①、二進制數據允許發送無法在Postman中輸入的內容,可發送圖像,音頻、視頻、文本文件;您也可以發送文本文件;
②、文件不會作為歷史保存,只能在每次需要發送請求的時候,重新添加;
Pre-request Script:請求發送前,可進行一些腳本設置,如,設置或清除參數、變量;
Tests:定義發送Request之后,需要用腳本檢測的內容,也就是Test case的內容;
(5)、Cookies
可以使用Cookie管理器編輯與每個域相關聯的Cookie,可以在本機應用程序中管理Cookie;
見{Postman接口測試實例【1】_通過Cookies登錄博客園}
2、響應Response
(1)、Body
Body標簽:提供了幾個工具來幫助您快速查看Response的Body。Body可以在三個視圖中看到 - Pretty,Raw和Preview。
Pretty:①、格式化了JSON和XML,方便查看;
②、點擊里面的URL,postman會創建一個request;
③、對於導航大響應,單擊左側的向下三角形(▼)以折疊大部分響應
④、json、HTML、XML、Text等;
Raw:text,原始視圖只是一個響應體的大文本區域;可判斷您的響應是否縮小;
preview:預覽選項卡會在沙盒iframe中呈現響應。一些Web框架默認情況下返回HTML錯誤,預覽模式在這里特別有用。由於iframe沙盒限制,JavaScript和圖像在iframe中被禁用。可以顯示返回圖像;可以測試音頻文件,PDF,zip文件或API拋出的任何內容;
(2)、Headers
Headers :顯示為鍵值對。懸停在標題名稱上可以根據HTTP規范給出對標題的描述。如果您發送HEAD請求,Postman將默認顯示Headers 標簽。
(3)、Response狀態
Time:計算響應從服務器到達所花費的時間;
Size:響應大小;
五、斷言Writing Test
設置全局變量;
設置環境變量;
拿到並處理請求的響應;
定義測試檢查點和斷言;
1、Clear a global variable:
①、清除一個全局變量;
②、postman.clearGlobalVariable(“variable.key”);
2、Clear an environment variable:
①、清除一個環境變量;
②、postman.clearGlobalEnvironmentVariable(“variable.key”);
3、Response body:Contains string:
①、response包含內容;
②、tests[“Body matches string”]=responseBody.has(“string_you_want_to_search”)
4、Response body:Convert XML body to a JSON Object:
①、將xml格式的response轉換成json格式;
②、var jsonObject = xml2Json(responseBody);
5、Response body:Is equal to a string:
①、response等於預期內容;
②、tests[*Body is corret*] = resposeBody === *response_body_string*;
6、Response body:JSON value check:
①、json解析key的值進行校驗;
②、tests[*Args key contains argument passed as url parament*] = ‘test’ in responseJSON.args;
7、Response headers:Content-Type header check:
①、檢查response的header信息是否有被測字段;
②、tests[*Content-Type is present*] = postman.getResponseHeader(“Content-Type”);
8、Response time is less than 200ms:
①、響應時間判斷;
②、tests[*Response time is less than 200ms*] = responseTime < 200;
9、Set an global variable:
①、設置全局變量;
②、postman.setGlobalVariable(“variable_key”,”variable_value”);
10、Set an environment variable:
①、設置環境變量;
②、postman.setEnvironmentVariable(“variable_key”,”variable_value”);
11、Status code:Code is 200:
①、判斷狀態碼;
②、tests[“Status code is 200”] = responseCode.code !=400;
12、Status code:Code name has string:
①、檢查code name是否包含內容;
②、tests[“Status code name has string”] = responseCode.name.has(“Created”);
13、Status code:Successful POST request:
①、成功的post請求;
②、tests[“Successful POST request”] = 201 ||responseCode.code ===202;
14、Use Tiny Validator for JSON data:
var schema = {
"items": {
"type": "boolean"
}
};
var data1 = [true, false];
var data2 = [true, 123];
pm.test('Schema is valid', function() {
pm.expect(tv4.validate(data1, schema)).to.be.true;
pm.expect(tv4.validate(data2, schema)).to.be.true;
});
六、測試集合Collections
1、數據驅動的接口自動化測試
2、命令行中運行
1、命令行中運行:可以在無UI界面的服務器上運行;可以在ci持續集成系統上運行;
2、運行准備:導出collection;安裝nodejs和npm(國內cnpm);安裝newman;
3、生成測試報告:CLI reporter;JSON reporter;HTML reporter;JUnit reporter;
七、變量
1、環境變量environment:比如可以將測試domain設置成環境變量;
2、全局變量Global variable:實現接口請求的參數依賴於其他接口的返回,比如可以將錯誤信息設置成全局變量;
3、Local本地變量:一般可以在sandbox中定義;
4、Data:測試數據中導入的變量,也就是所謂的參數化;
注意:當全局變量和環境變量沖突時,環境變量覆蓋全局變量;
八、 在test suite中運行test case
1、Environment :環境變量;
2、Iterations:重復運行次數;
3、Delay:間隔時間,用例與用例間的間隔時間;
4、Data:外部數據加載,即用例的參數化,可以與Iterations結合起來用,實現參數化,也就是數據驅動;
十、 Jekins+postman+newnam
1、Postman導出用例集合和導出環境變量;
2、newman運行:①、無環境變量:newman run D:\API.postman_collection.json;
②、有環境變量:newman run D:\API.postman_collection.json –environment D:\postnam_environment.json;
3、執行服務器上的Collection:newman –u https://www.getpostman.com/collections/cb208e7e64056f5294e5;
4、jenkins:①、構建;②、構建后發郵件;
十一、 Interceptor錄制
1、先在瀏覽器安裝Interceptor,並打開;
2、postman同時打開Interceptor;
3、刷新網頁,進行錄制請求;