二、接口关联,接口依赖(多接口关联)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("请求之前")
标签:postman,接口,access,token,var,log From: https://www.cnblogs.com/mlping/p/17381907.html