问题:使用Postman测试接口,获取请求或者响应中的某个字段,并传递给另一个接口请求的参数
思路:
1.获取接口请求或者响应中的字段
2.将获取的字段保存为Postman中的环境变量或者全局变量
3.在另一个接口中使用变量
前言:
1.Postman沙箱是一个JavaScript执行环境,沙箱中还可以使用许多NodeJS模块。也就是说,在Tests中用的是js语法写的测试脚本,调试过程中使用console.log()打印。
2.Postman的控制台查看调试信息,通过View→Show Postman Console(CTRL + ALT + C)打开,或者通过界面左下角的图标按钮打开。
3.参考资料为Postman官方文档:《Postman Sandbox》、《Postman Sandbox API reference》
解决:
举例:获取https://postman-echo.com/get
接口响应中的url值
var res_str=responseBody//responseBody是包含原始响应正文文本的字符串
var res_json=JSON.parse(res_str)//用JSON.parse()把字符串转为json
var data=res_json.url
举例:获取https://postman-echo.com/post
接口请求中,表单key为method对应的值
var res_dat=request.data//request表示请求对象,request.data是请求的表单数据字典
console.log(res_dat.method)//获取请求表单数据中键为method对应的value值
var res_data=request.data//request表示请求对象,因为是josn的方式request.data是请求内容字符串
var res_json=JSON.parse(res_data)//将字符串转换为json对象
console.log(res_json.method)
举例:获取https://postman-echo.com/get?test=postman
接口请求中,参数test对应的值
const querystring = require('querystring');//require(moduleName)使用沙盒内置库模块,querystring模块可以解析和格式化URL查询字符串
var url=request.url;//获取请求对象中的url
var str=url.split("?")[1];//使用split()把字符串分割成字符串数组
console.log(querystring.parse(str).test);//querystring.parse()将URL查询字符串解析为键和值对的集合
postman窗口右侧就自带了一些代码片段,点击相应的代码片段修改后就可以使用。
2.1保存为环境变量
环境变量:存在于当前的环境中,也只能在当前环境中使用
pm.environment.set("variable_key", "variable_value");
pm.globals.set("variable_key", "variable_value");
pm对象包含与正在执行的脚本有关的所有信息
1.使用pm.response获取接口响应中的字段
接口:https://postman-echo.com/get?test=postman
var re=pm.response.json()
console.log(re.url)
2.使用pm.request.body获取Post请求(form-data)中的字段
接口:https://postman-echo.com/post
表单:method:POST
var str=pm.request.body.formdata
console.log(str.get('method'))
3.使用pm.requestt.body.raw获取Post请求(json)中的字段
接口:https://postman-echo.com/post
body:{“method”: “POST”}
var re=JSON.parse(pm.request.body.raw)
console.log(re.method)
4.使用pm.request.url获取Get请求(params)中的字段
接口:https://postman-echo.com/get?test=postman
var re=pm.request.url.query
console.log(re.get('test'))
1.学会查看官方提供的文档解决问题
2.了解JavaScript和Node.js
3.学会用控制台查看用console.log()打印的调试信息