邮递员-未定义的变量块被发送到跑步者

我有一个脚本,可以使用Postman使用外部CSV数据文件进行API调用。

在此文件中,有一个数据集,其中每个单项都有多个数据量(介于1到3之间)。当我使用Runner运行集合时,对于少于3个条目的每一行,脚本都会失败,因为它会将其余条目视为未定义!

是否有一种方法可以为CSV文件的每个单独条目动态构建主体?

在CSV中,我有:


For some lines 1 entry : res_mac1,res_ip1,res_name1

For some lines 2 entries: res_mac1,res_name1,res_mac2,res_ip2,res_name2

For some lines 3 entries: res_mac1,res_name2,res_mac3,res_ip3,res_name3

我的身体如下:

 {
    "fixedIpAssignments": {
        "{{res_mac1}}": {
            "ip": "{{res_ip1}}","name": "{{res_name1}}"
        },"{{res_mac2}}": {
            "ip": "{{res_ip2}}","name": "{{res_name2}}"
        },"{{res_mac3}}": {
            "ip": "{{res_ip3}}","name": "{{res_name3}}"
        }
    }
}

但是在响应中,我收到的CSV条目少于3个的请求按照以下示例仅以2失败:

 {
    "fixedIpAssignments": {
        "11:22:33:44:55:66": {
            "ip": "192.168.1.1","name": "Host 1"
        },"22:33:44:55:66:77": {
            "ip": "192.168.1.2","name": "Host 2"
        },"name": "{{res_name3}}"
        }
    }
}

是否有一种方法可以阻止那些未定义的变量键和数据,同时仍将其保留在主体中,以防新数据集具有该变量?

我尝试了以下预请求脚本,但Postman不接受语法要求,并且还返回了一个保留数组,而不是纯JSON:

_ = require('lodash');

let setCount = _.chain(data)
    .keys()
    .countBy((item) => item.includes('mac'))
    .value()
    .true

var reservations = []; //Not sure an array is the good choice here...


for(var i = 1; i <= setCount; i++) {
    reservations.push(
       data[`res_mac${i}`]: { //Syntax error according to Postman...
            "ip": data[`res_ip${i}`],"name": data[`res_name${i}`]
        }
    );
}

let requestBody = {
    "fixedIpAssignments": {
        reservations
    }
};

pm.variables.set('requestBody',JSON.stringify(requestBody));

然后将以下命令简单地输入到主体中:

{{requestBody}}
sd529 回答:邮递员-未定义的变量块被发送到跑步者

暂时没有好的解决方案,如果你有好的解决方案,请发邮件至:iooj@foxmail.com
本文链接:https://www.f2er.com/2786461.html

大家都在问