Postman參數傳遞,斷言和設置變量


如果一共有幾十個接口,測試的時候如果要切換環境,這個時候要每個接口都要修改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
});


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM