postman

eiSouthBoy發表於2024-05-22

二、介面關聯,介面依賴(多介面關聯)postman在Tests中寫js指令碼,相當於jmeter中的後置處理器或beanshell(寫java指令碼)後置處理器

Tests(請求之後寫js,相當於jmeter後置處理器)  Pre-request Script(請求之前寫js,相當於jmeter前置處理器)

postman實現介面關聯:1>Tests: 從上一個介面響應中取值設定全域性變數

                  a、body為json時:json.parse   var data_dict = JSON.parse(responseBody)

                  b、body非json時:正則    var result = responseBody.match(new RegExp('"access_token":"(.*?)"'))

                 c、cookie提取    var csrf_token = postman.getResponseCookie('csrf_token');

                 d、header中提取    var conn = postman.getResponseHeader('Connection')         

             2>下個介面使用全域性變數{{變數}}

jmeter實現介面關聯:1>上一個介面加後置處理器:

             a、json提取器    響應body 

             b、正則提取器    響應(響應行,響應頭,響應body)

             c、beanshell提取器(在同一執行緒中,透過後置處理器拿到的變數,都可以透過vars.get("變數")獲取,跨執行緒組拿不到,除非設定全域性props變數)

String token= vars.get("access_token");//字串必須是雙引號   獲取後置處理器得到的變數access_token
log.info(token);

                         2>下個介面使用:${變數}

介面關聯:下一個介面的引數使用了上一個介面的返回值

2.1 使用json .parse格式解析----------------------------jmeter   jsonpath提取器

從返回值當中提取

在第一個介面的請求完之後:Tests提取值

//在控制檯輸出響應資訊
console.log(responseBody)
//獲取access_token值,定義一個字串data_dict
var data_dict = JSON.parse(responseBody)
//使用access_token值,儲存到全域性變數中
pm.globals.set("access_token", data_dict.access_token);
//列印全域性變數值
console.log(pm.globals.get("access_token"));
在第二個介面中使用:
透過全域性變數方式進行讀取:
{{access_token}}  -------------------------------------------   jmeter用${access_token}
2.2使用正則
//使用正則提取access_token
var result = responseBody.match(new RegExp('"access_token":"(.*?)"'))
//儲存到全域性變數中
pm.globals.set("access_token", result[1]);
注意:不能console.log(access_token)列印access_token,
 必須: console.log(pm.globals.get("access_token"))  獲取後再列印,jmeter的beashell也是先獲取再列印
2.3透過cookie提取(cookie是單數)
var csrf_token = postman.getResponseCookie('csrf_token');
console.log(csrf_token)
console.log(csrf_token.value)
2.4透過請求頭提取值(header是單數)
var conn = postman.getResponseHeader('Connection')
console.log(conn)
三、postman內建動態引數
{"tag":{"name":"廣東{{$timestamp}}"}}     //時間戳    postman內建的動態引數需要加$,自己寫的就不用加$
{"tag":{"name":"廣東{{$randomInt}}"}}   //0-1000的整數
{{$guid}}
在Pre-request Script(請求之前寫js)
var times = Date.now();
pm.globals.set("times", times);
console.log(times) 
在請求時傳參使用{{times}} 自己寫的就不用加$
注意點:postman中自帶的動態引數無法進行精確的斷言
注水3s
//讓介面請求停留3秒
const sleep = (milliseconds) => {
const start = Date.now();
while (Date.now() <= start + milliseconds) {}
};
sleep(3000);
console.log("請求之前")

  

 
 
 
 

相關文章