如果一共有幾十個接口,測試的時候如果要切換環境,這個時候要每個接口都要修改url的根路徑,一個一個的改也太麻煩了;
還有時候我們經常需要用到上一個接口的返回值,來作為下一個接口的數據來使用,要怎么把參數傳遞過去呢;
作為接口測試的話,驗證接口返回結果是否正確,需要斷言來判定這個接口的運行結果是否符合期望,這個時候又該怎么做。
在postman中,這些問題都有解決方案,下面跟我一起來看一下吧。
參考文檔:(點擊進入postman官方文檔地址)
一、設置全局(環境)變量
postman中可以設置全局和環境變量,以便可以存儲一些例如:url、token值、測試參數等數據。
變量的設置,是通過key-value的形式來存儲。
例如:url:http://test.baidu.com
變量的使用:通過{{變量key}}來調用關鍵字獲取值
例如:{{url}},可以放在需要填寫參數的任何位置。
如何創建變量:
點擊postman界面右邊的齒輪,在彈窗中可以選擇創建全局變量、導入變量文件、創建環境變量。
添加變量:
全局變量在創建后,任何時候都可以獲取到,而環境變量只有在設置為當前環境時,才會獲取到此環境中的變量。這個看個人需要來設置是全局變量還是環境變量,例如我把url、賬號密碼設為環境變量,因為有切換不同環境的需要。
添加全局變量:
添加環境變量
變量的引用:
如圖所示,是一個環境變量的設置和引用,當鼠標懸浮在我們引用的變量{{key}}上時,會顯示當前變量的值。
二、參數傳遞和斷言
在postman中有專門的代碼區域,可以通過js代碼語言來實現一些自定義操作。在Pre-request Script區域,是請求發送前的代碼區,比如我們需要對密碼進行md5加密后發送,就可以使用js中的方法先進行加密。在Tests區域中,可以通過獲取返回參數的值進行斷言,斷言失敗的接口會顯示為false結果。
如何進行參數傳遞:
比如支付接口,需要上一個下單接口返回的訂單號來作為入參。
這個時候,首先要在下單接口的Tests區域中,獲取到返回數據的訂單號,然后存儲為全局變量;
接着在支付接口中,入參中的訂單號值填寫為我們設置的全局變量,這樣就實現了一次參數傳遞。
下面我們來看一下這些方法都該怎么寫:
2.1變量的設置
這些方法是在postman中對全局(環境)變量的操作方法。
獲取變量
獲取全局變量:pm.globals.get(“variable_key”);
獲取當前環境變量:pm.environment.get(“variable_key”);
獲取普通變量:pm.variables.get(“variable_key”);
設置變量
設置全局變量:pm.globals.set(“variable_key”, “variable_value”);
設置當前環境變量:pm.environment.set(“variable_key”, “variable_value”);
清空變量值
清空當前環境變量:pm.environment.unset(“variable_key”);
清空全局變量:pm.globals.unset(“variable_key”);
2.2返回數據的判斷
這里需要注意的是,網上有一些教程比較老了,例如這種形式的寫法:
tests[“Status code is 200”] = responseCode.code === 200;
這樣的寫法官方文檔中已經表示不推薦使用,而是推薦統一的js書寫格式。
判斷返回狀態碼
pm.test(“返回狀態碼為200”, function () {
pm.response.to.have.status(200);
});
判斷返回header中是否有“Content-Type”字段
pm.test(“Content-Type字段存在”, function () {
pm.response.to.have.header(“Content-Type”);
});
判斷接口返回內容匹配一個字符串
pm.test(“返回內容匹配字符串”, function () {
pm.response.to.have.body(“response_body_string”);
});
判斷返回參數中包含某個字符串
pm.test(“字符串包含在返回值中”, function () {
pm.expect(pm.response.text()).to.include(“想要搜索的字符串”);
});
判斷接口響應時間
pm.test(“接口響應時間小於200ms”, function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
把responseBody轉為json字符串
var Jsondata =JSON.parse(responseBody);
把xml格式返回轉換為json格式
var jsonObject = xml2Json(responseBody);
獲取並判斷返回參數的值
//假設返回參數為:{“code” : 0}
pm.test(“斷言code字段值是否為0”,function(){
var jsonData = pm.response.json(); //創建一個變量,值為返回參數(json格式)
pm.expect(jsonData.code).to.eql(0); //判斷返回參數中code字段值為0
});
