二、接口关联,接口依赖(多接口关联)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("请求之前")

  

 
 
 
 
05-08 23:22