背景:需要给一批account_id跑一个接口,去修改某业务参数。因本地postman已有写好的请求,就懒得去再写脚本了,可以利用postman的runner批量执行,很方便。
由于该接口需要做签名,所以需要在Pre-request Script中写入签名脚本,之前将account_id设置为了全局环境变量,并在postman中以{{}}
包裹引用,在脚本中查找account_id时使用postman.getEnvironmentVariable("account_id")
获取account_id的值并替换,代码如下:
var replaceEnv = function(url) {
var envs = url.match(/{{[0-9A-Za-z_-]+}}/g);
envs.forEach(function(env) {
if (env !== "{{time}}" && env !== "{{sign}}") {
var val = postman.getEnvironmentVariable(env.replace("{{", "").replace("}}", ""));
url = url.replace(env, val);
}
});
return url;
};
但在runner模式下,应使用pm.iterationData.get("account_id")
才能获取到迭代步骤中的account_id的值,代码修改如下:
var replaceEnv = function(url) {
var envs = url.match(/{{[0-9A-Za-z_-]+}}/g);
envs.forEach(function(env) {
if (env !== "{{time}}" && env !== "{{sign}}") {
if (env === "{{account_id}}") {
var val = pm.iterationData.get("vehicle_id");
url = url.replace(env, val);
}
else {
var val = postman.getEnvironmentVariable(env.replace("{{", "").replace("}}", ""));
url = url.replace(env, val);
}
}
});
return url;
};