Arrays 变量中的数组就像邮递员中的字符串一样发送
我从响应中收集数据,并在“测试”中将其推入数组Arrays 变量中的数组就像邮递员中的字符串一样发送,arrays,environment-variables,postman,Arrays,Environment Variables,Postman,我从响应中收集数据,并在“测试”中将其推入数组console.log显示我收到了数组: 然后我将其保存到环境变量中,以便在下次调用中使用。但请求中的值是字符串,因此只有第一个值正在运行 如何设置普通数组 我收集的数据的回应: { "sent": 0, "remaining": 1000000, "gifts": [ { "id": 43468, "amount": 50000, "can_gift_back": true
console.log
显示我收到了数组:
然后我将其保存到环境变量中,以便在下次调用中使用。但请求中的值是字符串,因此只有第一个值正在运行
如何设置普通数组
我收集的数据的回应:
{
"sent": 0,
"remaining": 1000000,
"gifts": [
{
"id": 43468,
"amount": 50000,
"can_gift_back": true
},
{
"id": 43469,
"amount": 50000,
"can_gift_back": true
}
]
}
“测试”选项卡中的我的代码:
让jsonData=pm.response.json();
让礼物=jsonData.gives;
//计算数组长度
函数对象长度(obj){
var结果=0;
用于(obj中的var prop){
if(对象拥有自己的财产(财产)){
结果++;
}
}
返回结果;
}
让arrayLength=对象长度(礼物);
//将响应数据推送到阵列
var giftsArray=[];
对于(变量i=0;i
UPD:
stringify
时的行为方式
第2点描述了未使用stringify
时的行为
2.带有手动输入id的请求JSON示例您可以使用捕获数组中的所有
id
值,这是一个可以在Postman应用程序中使用的外部模块
在此之后,将数组
保存为变量与您之前所做的相同,但我已在数组值周围添加了JSON.stringify()
,否则它会将其保存为字符串
let giftsArray = []
_.each(pm.response.json().gifts, (item) => {
giftsArray.push(item.id)
})
pm.environment.set('giftsToCollect', JSON.stringify(giftsArray))
然后,您应该能够像这样引用环境变量:
gift_id:{{giftsToCollect}
我在本地模拟了请求数据,只是为了向您展示如何从数据中捕获值
工作方法是将第二次测试的数据添加到第一次测试的“测试”选项卡中。在这种情况下,2d测试不会在整体上运行,但会收集礼物。这不是最好的决定,但它是有效的
let jsonData = pm.response.json();
let giftsArray = [];
_.each(pm.response.json().gifts, (item) => {
giftsArray.push(item.id);
});
pm.sendRequest({
url: 'http://url/api/gifts/collect',
method: 'POST',
header: {
'Content-type': 'application/json',
'Host': 'url',
'accept-encoding': 'gzip, deflate',
'Connection': 'keep-alive'
},
body: {
mode: 'raw',
raw: JSON.stringify({'api_token': '48696295110ba1e8f9937820dc9b6626', 'user_id': '100650741100901', 'gift_ids': giftsArray, 'version': '6.0.0'})
}
}, function (err, res) {
console.log(res);
});
在将其保存到环境变量时,您是否尝试过将其包装在一个
JSON.stringify(giftsArray)
中?@DannyDainton,是的,我在不同的变量中尝试过,但没有帮助。保存的变量看起来像什么,您能用该变量的图像更新吗?您是否尝试过删除请求正文中变量名周围的引号和括号?如果它以数组的形式保存在环境中,那么需要的就是{{var_name}}
语法。保存的变量是[557855795580]。在请求中,它是这样发送的:gift\u id=[5578557955805581558255835584558555865587]
(它是从Fiddler捕获的请求正文),而不是像我的答案屏幕上那样在不同级别上的每个值。事实上,你的代码帮不了我。。。感谢您提供了一个收集ID的简短方法:)代码对您没有帮助吗?:)
let jsonData = pm.response.json();
let giftsArray = [];
_.each(pm.response.json().gifts, (item) => {
giftsArray.push(item.id);
});
pm.sendRequest({
url: 'http://url/api/gifts/collect',
method: 'POST',
header: {
'Content-type': 'application/json',
'Host': 'url',
'accept-encoding': 'gzip, deflate',
'Connection': 'keep-alive'
},
body: {
mode: 'raw',
raw: JSON.stringify({'api_token': '48696295110ba1e8f9937820dc9b6626', 'user_id': '100650741100901', 'gift_ids': giftsArray, 'version': '6.0.0'})
}
}, function (err, res) {
console.log(res);
});