postman 詳細使用 (2):預處理腳本、斷言

postman 預處理腳本、斷言

 

postman 爲每一個 HTTP 請求提供了 pre-request script 用於存放在該請求進行之前執行的腳本,tests 用於存放在該請求獲取響應之後執行的腳本,一般用於根據響應信息進行斷言測試;

這裏需要注意的是,postman 分爲 native app、 chrome app 兩個版本,native app 中的部分對象 chrome app 中是不可使用的,chrome app 中所有的對象語法,native app 中都兼容,特別是 native app 的 pre-request script 、tests 中的 snappets 中的自動生成示例代碼,這些代碼基本在 chrome app 中是無法運行的;

 

 

全局、環境變量設置

獲取變量

//通用語法
postman.getGlobalVariable("key");       //獲取全局變量
postman.getEnvironmentVariable("key");  //獲取環境變量  

//postman native app 特有語法 
pm.globals.get("key");                //獲取全局變量
pm.environment.get("key");            //獲取環境變量  

設置變量

//通用語法
postman.setGlobalVariable("key","value");       //設置全局變量
postman.setEnvironmentVariable("key","value");  //設置環境變量  

//postman native app 特有語法 
pm.globals.get("key","value");                //設置全局變量
pm.environment.get("key","value");            //設置環境變量  

清除變量

//通用語法
postman.clearGlobalVariable("key");       //清除全局變量
postman.clearEnvironmentVariable("key");  //清除環境變量  

//postman native app 特有語法 
pm.globals.unset("key");                //清除全局變量
pm.environment.unset("key");            //清除環境變量  

將數組,嵌套對象儲存到全局變量、環境變量中

有時候,我們要將數組,嵌套對象,json 對象儲存到環境變量,全局變量,可以使用 postman 提供的 JSON 工具類,將其儲存爲 json 格式的字符串,如下:

//將數組儲存到環境變量中
var array = [1, 2, 3, 4];
postman.setEnvironmentVariable("array", JSON.stringify(array));

//將嵌套對象儲存到環境變量中
var obj = { a: [1, 2, 3, 4], b: { c: 'val' } };
postman.setEnvironmentVariable("obj", JSON.stringify(obj));

//從環境變量中獲取數組對象
var array = JSON.parse(postman.getEnvironmentVariable("array"));

//從環境變量中獲取嵌套對象/json對象
var obj = JSON.parse(postman.getEnvironmentVariable("obj"));

 

斷言語法

postman 爲請求提供了斷言腳本,編寫在請求的 tests 中,在運行該HTTP請求獲取響應後,會自動執行 tests 腳本的內容,其中的斷言結果會顯示在 Test Results 面板中;

postman 提供的斷言語法十分簡單,爲 tests["斷言名稱"] = 判斷表達式,如下:

//判斷響應正文是否式一個字符串
tests["Body is correct"] = responseBody === "response_body_string";

//判斷響應時間是否小於200ms
tests["Response time is less than 200ms"] = responseTime < 200;

同時 postman 還對響應的各個常用部分封裝爲對象,可以直接調用;

responseCode 響應狀態
responseHeaders 響應頭
responseBody 響應正文
responseTime 發出請求到接收響應的時間(單位:ms)

一些常用示例如下:

響應狀態校驗

//驗證響應碼爲 200
tests["Status code is 200"] = responseCode.code === 200;

//校驗響應狀態代碼包含某個值
tests["Status code name has string"] = responseCode.name.has("OK");

響應頭校驗

//獲取響應頭的屬性,以 “Pragma” 屬性爲例:
var pragmaVal = postman.getResponseHeader("Pragma");
var paramVal =responseHeaders.Pragma;

//驗證響應頭是否存在某個屬性
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");           //不區分大小寫
tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");      //區分大小寫

//驗證響應頭 Pragma 屬性是否爲 “no-cache”
tests["Pragma is no-cache"] = postman.getResponseHeader("Pragma") === "no-cache"
tests["Pragma is no-cache"] = responseHeaders.Pragma === "no-cache"

響應正文校驗

//將 json 格式的響應正文轉化爲 json 對象,並檢查 json 值;
var data = JSON.parse(responseBody);
tests["Your test name"] = data.value === 100;

//將 xml 格式的響應正文轉化爲 json 對象,並檢查 json 值;
var jsonObject = xml2Json(responseBody);
tests["Your test name"] = data.value === 100;

//檢查響應正文中是否包含某個字符串
tests["Body matches string"] = responseBody.has("string_you_want_to_search");

響應時間校驗

//校驗響應時間小於200ms 
tests["Response time is less than 200ms"] = responseTime < 200;

//校驗響應時間在一個特定的範圍內(包括下限和上限)
tests["Response time is acceptable"] = _.inRange(responseTime, 100, 1001); 
tests["Response time is acceptable"] = responseTime >= 100 && responseTime <= 1001;  //或者直接這樣

 

更多詳見官方文檔:https://www.getpostman.com/docs/v6/postman/scripts/test_examples

 

 

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章