我正在使用Postman v6.1.4。我正在大量使用环境变量。但是看来pm.environment.get()
并未评估嵌入式变量。
我在环境中定义了以下环境变量:
addFavDest1:{"ownerId":"{{addFavDest1_ownerId}}","url":"{{addFavDest1_url}}",...}
...
addFavDestArray1:[{{addFavDest1}},{{addFavDest2}},{{addFavDest3}}]
我的API的请求正文包含:
{{addFavDestArray1}}
该请求已成功发送,并带有我期望的数据,并评估了我环境中的所有嵌入式变量。
但是,当我尝试在测试脚本中访问该env var时,将不评估嵌入式变量。例如,以下内容:
var addFavDestArray1 = pm.environment.get('addFavDestArray1')
返回[{{addFavDest1}},{{addFavDest2}},{{addFavDest3}}]
,不评估变量。
是否有某种方法可以在环境中评估嵌入式变量?
答案 0 :(得分:0)
因此,为了处理这种情况,我创建了以下所有测试而不是pm.environment.get('var1')
或environment['var1]
或environment.var1
调用的通用函数。
/* funcGetAndEvalEnvVar */
var funcGetAndEvalEnvVar = (varName) => {
const EMBEDDED_VAR_REGEX = new RegExp(`{{\\w+}}`, 'g');
var varValue = environment[varName];
var evalVarValue = varValue;
var reMatch;
while (reMatch = EMBEDDED_VAR_REGEX.exec(varValue)) {
var embeddedVar = reMatch[0];
var embeddedVarName = embeddedVar.slice(2, -2);
if (environment.hasOwnProperty(embeddedVarName)) {
var embeddedVarValue = funcGetAndEvalEnvVar(embeddedVarName);
evalVarValue = evalVarValue.replace(new RegExp(embeddedVar, 'g'), embeddedVarValue);
}
}
return evalVarValue;
};