Postman 正確使用姿勢

南國以南i發表於2022-04-18

前言:

請各大網友尊重本人原創知識分享,謹記本人部落格:南國以南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記錄點滴每天成長一點點,學習是永無止境的!轉載請附原文連結!!!

參考連結參考連結

相關文章