postman在tests頁簽獲取響應內容
postman在tests頁簽獲取響應內容:
tests頁簽支持javascripts語法,可以把獲取的響應內容放入定義的變量中。然后使用tests[變量名]進行輸出
1、獲取響應行
var code = responseCode.code; //獲取響應狀態碼
var name = responseCode.name; //獲取響應狀態信息
2、獲取響應頭
var content_type = postman.getResponseHeader('Content-Type') //獲取響應頭
var path = postman.getResponseCookie('_ac_app_ua').path ; //獲取cookie信息
3、獲取響應正文
var body = responseBody;
postman在tests頁簽獲取響應內容
postman在tests頁簽獲取響應內容:
4、獲取響應時間
var time = responseTime;
5、利用正則表達式截取部分響應正文
var title = body.match(new RegExp('<title>(.+?)</title>'))[1];
6、響應正文為json時,可以利用postman進行解析再獲取部分響應正文
var jsondata = JSON.parse(responseBody); //把響應正文轉化為json對象
var token = jsondata.access_token; //json對象名.鍵名
postman環境變量&全局變量設置
postman環境變量、全局變量設置:
在公司中,一般會存在開發環境、測試環境、線上環境等,如果需要在不同的環境下切換做接口測試,顯然我們需要把所有接口的域名進行修改,如果接口測試用例較多,那么修改會非常費力,postman可直接通過切換環境來實現多個環境中的參數切換。
postman設置環境變量:
1、點擊右上角設置圖標,選擇Manage Environments--Add,在頁面中設置環境信息,點擊ADD;
2、然后在休要使用環境變量的地方使用{{環境變量名}}替換靜態的固定值;
3、設置好后,在左上角的下拉框可以下拉來切換環境。
postman設置全局變量:
1、點擊右上角設置圖標,選擇Manage Environments--Add,點擊Globals進入全
局變量管理界面;
2、添加全局變量后,點擊ADD;
3、然后在休要使用環境變量的地方使用{{全局變量名}}替換靜態的固定值。
postman多接口順序執行
Runner的使用:postman都是單獨運行某個接口,而postman的Runner模塊,可以實現真正意義上的自動化接口測試,它的主要功能如下:按順序調用接口,執行用例;批量發送請求;對接口數據進行參數化
操作步驟:
1、左側選擇要批量執行的Collections
2、右側選擇接口和調整要執行的接口順序
3、點擊執行
postman設置接口關聯:在實際的接口測試中,后一個接口經常需要用到前一個接口返回的結果,從而讓后一個接口能正常執行,這個過程的實現稱為關聯。
在postman中實現關聯操作的步驟如下:
1、利用postman獲取上一個接口指定的返回值
2、使用postman全局變量保存上一個接口的值,代碼如下:
postman.setGlobalVariable("全局變量名", str); 其中前面的參數為全局變量名稱
,后面為變量
3、和之前引用全局變量一樣,使用{{全局變量名}}即可。
postman實現參數化:
在實際的接口測試中,部分參數每次發送請求時都要唯一(比如注冊),這時可采用postman把測試數據進行參數化處理。postman設置參數的形式主要
有三種:
內建變量實現
Pre-request Script頁簽中使用代碼實現
外部文件的方式實現
postman實現參數化:
Postman有以下內建變量,適合一次性使用:
{{$guid}}//生成GUID
{{$timestamp}}//當前時間戳
{{$randomInt}}//0-1000的隨機整數postman實現參數化postman實現參數化:
Pre-request Script頁簽中使用代碼實現:
Pre-request Script為執行接口請求之前要做的操作,而tests是執行完請求要做的操作。內建變量一般放在Request里,我們也可以用代碼在Pre-request Script中實現,用代碼實現的好處是可以復用。
時間戳實現:
var times = Date.now();
guid實現:
const guid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'
.replace(/x/g, () => (Math.floor(Math.random() * 16)).toString(16))
.replace(/y/g, () => (Math.floor(Math.random() * 4 + 8)).toString(16));
隨機整數實現:
const randomInt = (min, max) => Math.floor(Math.random() * (max -min + 1)) +
min;
postman實現參數化:
從多個選項中選擇實現:
const getRandomValue = list => list[randomInt(0, list.length -1)];
const charsInName = ['王','李','張'];
隨機手機號實現:
environment.randomMobile = `18${randomInt(100000000, 999999999)}`;
同步等待實現:
const sleep = (milliseconds) => {
const start = Date.now();
while (Date.now() <= start + milliseconds) {}
};
postman實現參數化:外部文件方式實現參數化:
在postman中,除了上述兩種方法實現參數化,還可以利用外部數據文件(支持csv文件和包含json格式文本的數據)。外部數據文件目前是通過Runner頁簽可以進行導入。csv文件要在Collection Runner中工作,
第一行必須是在request中要使用的變量名,每一行是一條用例,並表示一次迭代。json文件你需要確保你的文件有鍵/值對數組。數組中的每個元素是鍵值對對象,代表一次迭代。key作為request中要使用的變量名,value作為key的取值。
postman實現參數化:外部文件方式實現參數化步驟:
1、准備要使用的測試數據文件;
2、在postman腳本中,HTTP requests中使用{{ key }}去引用,在script中使用data. key 或者data[“key”] 去引用;
3、打開Runner窗口,點擊Data旁邊的Select File按鈕,導入參數化文件;點擊Data File Type類型后,點擊Preview按鈕,檢查是否數據正確,如果不正確,調整數據格式或編碼;
4、設置迭代次數,每次迭代都將使用你的數據文件中的一行,如果迭代次數超過數據文件中的行數,將重復使用最后一行數據。
postman定義公共函數:
在postman中,如下面的代碼:
1、返回元素是否與預期值一致
var assertEqual=(name,actual,expected)=>{tests[`${name}:實際結果:
${actual} ,期望結果:${expected}`]=actual===expected;};
2、返回元素是否與預期值不一致
var assertNotEqual=(name,actual,expected)=>{tests[`${name}:實際結果:
${actual} ,期望結果:${expected}`]=actual!==expected;};
以上都是自定義的斷言函數,還有之前課程中的參數化實現腳本,每次在使
用的時候都需要把代碼進行復制粘貼,很不方便,可以使用公共函數來實現。
postman定義公共函數:
eval() 函數作用:可以接受一個字符串str作為參數,並把這個參數作為腳本代碼來
執行。
舉例:
var s = "var a = 10; var b = 20;"
eval(s);
var c = eval("a+b");
tests[c] = true;
var str = "var randomInt = (min, max) => Math.floor(Math.random() * (max -min
+ 1)) + min;";
eval(str);
tests[ randomInt(50,80) ] = true;
postman定義公共函數:
根據上一個PPT中eval()函數的應用和之前全局變量的知識,可以做如下操作完成公共函數的編寫:
把定義好的函數作為字符串存放在變量中;把上一個定義的變量設置到全局變量中;
在需要使用函數的地方,使用eval()函數把全局變量中的值轉換為代碼進行執行 備注:只能使用var定義的函數,不能用const