【问题标题】:Postman Embedded Environment Variables Not Being EvaluatedPostman 嵌入式环境变量未评估
【发布时间】:2019-01-08 12:06:09
【问题描述】:

我正在使用 Postman v6.1.4。我大量使用环境变量。但似乎pm.environment.get() 没有评估嵌入变量。

我在环境中定义了以下环境变量:

addFavDest1:{"ownerId":"{{addFavDest1_ownerId}}","url":"{{addFavDest1_url}}",...}
...
addFavDestArray1:[{{addFavDest1}},{{addFavDest2}},{{addFavDest3}}]

我的 API 的请求正文包含:

{{addFavDestArray1}}

请求已成功发送,其中包含我期望的数据,并评估了我环境中的所有嵌入变量。

但是,当我尝试在我的测试脚本中访问该环境变量时,嵌入的变量并未被评估。例如,以下内容:

var addFavDestArray1 = pm.environment.get('addFavDestArray1')

返回[{{addFavDest1}},{{addFavDest2}},{{addFavDest3}}],不计算变量。

有没有办法在环境中评估嵌入变量?

【问题讨论】:

  • 这是一个已知问题。你必须忍受它。 get() 按原样从环境中获取字符串。它不评估任何东西。

标签: environment-variables postman


【解决方案1】:

因此,为了处理这种情况,我创建了以下常用函数,我从所有测试中调用,而不是 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;
};

【讨论】:

    猜你喜欢
    • 2020-11-17
    • 2021-08-28
    • 2011-07-04
    • 2016-08-27
    • 1970-01-01
    • 2020-11-16
    • 2010-10-14
    • 2020-07-12
    • 2010-09-24
    相关资源
    最近更新 更多