postman中返回值提取_Postman入门第一坑:提取返回值

本文介绍了如何在Postman中提取接口测试返回值,特别是当返回值包含在HTML body或header中时。通过JSON.parse()解析JSON响应,使用xml2Json()转换XML并提取所需值,如token。同时,利用全局变量和环境变量进行值存储,并通过JSON.stringify()辅助分析复杂结构。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Test Tools

on 2018-04-13

|

tags: Postman

Interface

Test

Postman是做接口测试的,但是很多接口并不是直接就能测,有的需要一些预处理。比如说身份认证,需要传递一个token。如果做网页测试,一般打开登陆界面的时候就会生成一个token,如果返回值是json格式,用Postman从中提取值是很简单的,在Tests中输入:

var jsonData =JSON.parse(responseBody);//获取body中返回的所有参数

pm.environment.set("appKey",jsonData.data.keys);//把返回参数中的keys设置为环境变量

postman-start-01.png?raw=true

如果token在返回的header里,也很简单:

var value = postman.getResponseHeader("Access-Token");

pm.environment.set("Access-Token",value);

postman-start-02.png?raw=true

如果token在返回值的body中,呵呵,网上并没有适合小白看的清晰的解决方法。我花了好长好长好长时间才找到这么两行小字:

//转换XML body为JSON对象

var jsonObject = xml2Json(responseBody);

那我的思路就有了:将html转换成json,再从json中提取token不就简单了。

依然还是老办法,拿出我的终极武器——redmine来测试。登陆页面的返回值大概是这样的,我们要提取的是csrf-token:

Redmine

...

一开始我觉得可能是这样取值:

pm.globals.set("token", jsonObject.html.head.meta[4].content);

为了调试方便,我们这里取全局(globals)变量,因为环境(environment)变量只有在测试执行过程中才存在,测试执行完就释放了。

send之后点右上角小眼睛,如果全局变量取到值的话这里会有显示的:

postman-start-03.png?raw=true

然而并没有,排查原因,把最后的content去掉试试(为了看的更清楚,把[4]也去掉):

var jsonObject = xml2Json(responseBody);

pm.globals.set("token", jsonObject.html.head.meta);

这时候取到全局变量了,不过[object Object],[object Object]...需要翻译啊,很明显取到meta这一层是没错的:

postman-start-04.png?raw=true

这时候需要一个将json转换成字符串的工具,方便我分析,然后就找到了JSON.stringify():

pm.globals.set("getstring", JSON.stringify(jsonObject.html.head.meta));

postman-start-05.png?raw=true

将json复制出来美化一下:

postman-start-06.png?raw=true

原来meta下一层是个$。事后才醒悟过来,name和content并不是meta的下层,而是meta的属性,xml2Json()方法将属性转换成$标记的下层。

修改之后再次测试:

pm.globals.set("token", jsonObject.html.head.meta[4].$.content);

postman-start-07.png?raw=true

完美解决。

总结

Postman从响应中提取值的方法:

从json中提取

var jsonData =JSON.parse(responseBody);

从html的Header中提取

var value = postman.getResponseHeader("Access-Token");

pm.environment.set("Access-Token",value);

从html的body中提取

var jsonObject = xml2Json(responseBody);

将json object转换成字符串的函数JSON.stringify(jsonObject)。

参考文章

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值