前言:
請各大網友尊重本人原創知識分享,謹記本人部落格:南國以南i
簡介:
Postman是一個介面測試工具,在做介面測試的時候,Postman相當於一個客戶端,它可以模擬使用者發起的各類HTTP請求,將請求資料傳送至服務端,獲取對應的響應結果, 從而驗證響應中的結果資料是否和預期值相匹配;並確保開發人員能夠及時處理介面中的bug,進而保證產品上線之後的穩定性和安全性。 它主要是用來模擬各種HTTP請求的(如:get/post/delete/put..等等),Postman與瀏覽器的區別在於有的瀏覽器不能輸出Json格式,而Postman更直觀介面返回的結果。
背景:
當我們使用Postman做介面測試時,不免某些介面請求前需要獲取token引數,驗證請求是否有效。
問題引申:當我們獲取到token後需要手動新增到請求頭裡面,一旦token過期了,需要重新獲取token,需要手動替換請求頭中的token。周而復始麻煩的很!!!
解決思路:設定Postman中全域性變數,將引數返回值token設定全域性變數,便於其他介面呼叫
Test 簡介
在 postman 中封裝了我們常見的斷言(Tests),當然 Tests 除了可以作為斷言,還可以當做後置處理器
- 獲取當前介面的響應,傳遞給下一個介面
- 控制多個介面間的執行順序
一、【登入介面】獲取token
1.1 設定全域性變數
設定全域性引數,新增請求【登入介面】的請求引數
1.2 呼叫全域性引數
二、【查詢介面】併入token
2.1 【查詢介面】token驗證
2.2 【登入介面】中使用Tests語句自動新增環境變數
//把返回值解析成json字串 var res = JSON.parse(responseBody) //引數填充 postman.setEnvironmentVariable("authorization",res.value.token); //簡寫 //pm.environment.set("authorization", res.value.token); //自動設定值 //postman.setGlobalVariable("authorization",res.value.token)
傳送請求執行後,再次檢視【登入請求】,全域性引數已自動新增token值
2.3 【查詢介面】中引用引數值
引用引數值,實現每執行【登入介面】請求,完成token自動賦值替換
Tests 中常用方法
//1、設定環境變數 postman.setEnvironmentVariable("key", "value"); 或 pm.environment.set("key", "value"); //2、設定全域性變數 postman.setGlobalVariable("gv", "111111"); 或 pm.globals.set("g", "2222"); //3、檢查resonse body中是否包含某個string tests["結果:Body matches string"] = responseBody.has("string_you_want_to_search"); 或 pm.test("結果:Body is correct", function () { pm.response.to.have.body("response_body_string"); }); //4、驗證Status code狀態響應碼是否是某個值 tests["Successful POST request"] = responseCode.code === 200 || responseCode.code === 202; 或 pm.test("Successful POST request", function () { pm.expect(pm.response.code).to.be.oneOf([200,202]); });
Pre-request Script 簡介
- Pre-request Script是集合中請求傳送之前需要執行的程式碼片段
- 請求引數中包含一個隨機數或者請求header中包括一個時間戳,或者你的請求引數需要加密
一、【登入介面】請求發起前處理
使用Pre-request Script語句對密碼進行加密請求
var body_json = { "userCode" : "admin", "passwd" : "123456" } pwd = body_json["passwd"] // 獲取passwd的值 var pwd = CryptoJS.MD5(pwd).toString() // md5加密pwd變數 body_json["passwd"] = pwd // 設定passwd為加密後的密碼 console.log(body_json) var body_str = JSON.stringify(body_json) // converts objects to strings pm.environment.set('request_body', body_str) // 把處理後的body賦值給引數request_body,在body中輸入{{request_body}}
樣例:
Pre-request Script 中常用方法
// 清除全域性變數 pm.globals.unset("variable_key"); // 清除環境變數 pm.environment.unset("variable_key"); // 獲取全域性變數 pm.globals.get("variable_key"); //獲取一個變數 pm.variables.get("variable_key"); // 獲取環境變數 pm.environment.get("variable_key"); //傳送一個請求 pm.sendRequest("https://postman-echo.com/get", function (err, response) { console.log(response.json()); }); //設定環境變數 pm.globals.set("variable_key", "variable_value");
總結:
我是南國以南i記錄點滴每天成長一點點,學習是永無止境的!轉載請附原文連結!!!