postman 获取返回数据_Postman提取返回值

时间:2025-04-20 14:24:22

#json响应结果

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

{

"access_token": "dda7b55f-574d-4de6-9f62-d849d5894ba9",

"token_type": "bearer",

"refresh_token": "1da3f4fb-dbf7-40d6-9316-32916f4c0d03",

"expires_in": 3599,

"scope": "READ WRITE"

}

如上要提取access_token的值,在Test中输入:

//保存响应结果json

var jsonData = (responseBody);

//将响应结果中的access_token保存为全局变量hb_access_token

//最新版本pm环境变量设置使用方法

("hb_access_token",jsonData.access_token);

上面的响应结果是json格式,如果响应结果是text格式的如何获取返回值呢?

#text响应结果

案例1

VZISsIhsksx3lHKksBE68sJ8NFlzZWNyZXRJZD1BS0lEbXRoeUxFNFFXMDVXWEhqNFN5RjBEdkpBbElPeHFyY3cmY3VycmVudFRpbWVTdGFtcD0xNTYxOTc5MTMzJmV4cGlyZVRpbWU9MTU2MjE1MTkzMyZyYW5kb209MzQ0MjkwOTEyJnByb2NlZHVyZT1oYi1tcDQtMjA=

如果是这种响应结果,那么获取响应值如下:

("hb_sign",())

如果响应的结果是html格式,那么怎么获取其中需要的value呢?

案列2

Redmine

如上,需要获取csrf-token的值,可以使用以下操作:

var cs_token_temp = ();

var cs_token_temp_01 = (/name="csrf-token" content="(.*?)"/)[1];

//match()里面的前后两个反斜杠是必要的

("cs_token", cs_token_temp_01);

(("cs_token"));

以上是使用正则表达式获取token的值。网上还有另外一种操作方法:

//转换XML body为JSON对象

var jsonObject = xml2Json(responseBody);

("cs_token", [4].$.content);

可以使用("getstring", ());获得html的分层信息。

但是在使用这个操作的时候,一直是提示html 没有定义。查找postman的手册也没发现有什么特定的操作,不知道是不是收费版本才有的高级功能呢?

#扩展

上面说到的json格式是简单的{}形式,如果碰到复杂的如下:

{

"status": 1,

"message": "success",

"data": [

{

"id": 1,

"title": "乡愁",

"author": "余光中",

"content": "小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头。长大后,乡愁是一张窄窄的船票,我在这头,新娘在那头"

},

{

"id": 5,

"title": "乡愁",

"author": "余光中",

"content": "小时候,乡愁是一枚小小的邮票,我在这头,母亲在那头。长大后,乡愁是一张窄窄的船票,我在这头,新娘在那头"

}

]

}

跟上面不同的是,data里面可能有多个json格式的数据,如果我们想断言data里面第一个json应该如何断言呢?其实也非常简单,我们在tests输入框中填写:

var jsonData = (responseBody);

tests["Check respose status value"] = === 1;

("判断data里面第一个json数据的id为1", function () {

var jsonData = ();

([0].id).(1);

});