Postman Canary 8.0.0-canary01 不保存环境变量

Postman Canary 8.0.0-canary01 not saving environment variables

今天我将我的 Postman 升级到最新版本,从 PostmanCanary 7.37.0-canary01 升级到 8.0.0-canary01。

我曾经 运行 一个登录请求,并使用这个脚本将返回的访问令牌保存到我的环境变量中:

response = JSON.parse(responseBody);
access_token = response.access_token;
postman.setEnvironmentVariable("access_token",access_token);

处理此响应:

{
    "token_type": "Bearer",
    "expires_in": "3599",
    "ext_expires_in": "3599",
    "expires_on": "1610147694",
    "not_before": "1610143794",
    "resource": "https://xxxxxxxxxxx.crm.dynamics.com/",
    "access_token": "eyJ0eXAiOiJKV1QxxxxxxxxxxxxxxxI1NiIsIng1dCI6IjVPZjlQNUY5xxxxxxxxxxxxxxxxxxxxxx1EayIsxxxxZCI6IjxxxxxxxxxxxxNDd0NtxxxxxxxxxEREUS1Exxxx.xxxxxxxxxxxxxxxwczovL2RxxxxkZXZxxxxxxxxxxxxxxxxxxxxxcy5jb20vIiwiaXNxxxxxxxxxxxxxxxxzdHMud2luZG93cy5uZXQvNTBmOGZjYzxxxxxxxxxxxxxxxxxxxxxtMzZlZDU3YzdjOGEyLyIsImlhdCI6MTYxMDE0Mzc5NCwibmJmIjoxNjEwMTQzNzk0LCJleHAiOjE2MTAxNDc2OTQsImFpbyI6IkUySmdZQWc0bjN2L1o4VE5HT20zdnRQMStMZGFBZ0E9IiwiYXBwaWQiOiI4ZTc3ZDkzZi05MmY1LTRhMWYtOWY1OS1iZGY4ZGNkYTNkY2IiLCJhcHBpZGFjciI6IjEiLCJpZHAiOiJodHRwczovL3N0cy53aW5kb3dzLm5ldC81MGY4ZmNjNC05NGQ4LTRmMDctODRlYi0zNmVkNTdjN2M4YTIvIiwib2lkIjoiYmJmZjA5OTQtZGQyNi00Nzg5LThlMjktMTc5OTIwOWI0ZDMxIiwicmgiOiIwLkFBQUF4UHo0VU5pVUIwLUU2emJ0VjhmSW9qX1pkNDcxa2g5S24xbTktTnphUGNzTkFCdy4iLCJzdWIiOiJiYmZmMDk5NC1kZDI2LTQ3ODktOGUyOS0xNzk5MjA5YjRkMzEiLCJ0aWQiOiI1MGY4ZmNjNC05NGQ4LTRmMDctODRlYi0zNmVkNTdjN2M4YTIiLCJ1dGkiOiJjZXJzaGlldGxFeU15Q1c2MVFWTUFBIiwidmVyIjoiMS4wIn0.EXV9P_DZIdVbTUK4PY6VcyrUmUx752ZA9MGr5BJ7xxxxxxxxxxxx-xxxxxxxxxX5wgidfGfoNklllZuoJVTi91jtnKP2T9Q-XFShpXhexDdCgOvMe9ZOOd0vOb11of1YPl37GKILtHikT3oPvKfUjBhOjZkFJo6F7pKeuxa3XiD_3WM1eCurVzuaG9iME94mFXb3HNTgUrWw9mPEqDwVzfxxxxx-xxxx-xxxxy0lw-2EcqpEYk7fqHUOTPUfAj2426zVV7ITfFPLdN08c4OND336sXpKjEFa5c7Buyk1dc24nawqJwCoKve1DaZAwPwljZKhGIIW4rd-1nitik2xWg"
}

即使环境变量在调用之前不存在,此脚本也会创建它们并设置值。如果我打开环境变量,它会被列出。

升级后,这不再有效。我的后续请求一直失败,因为旧的 access_token 仍然存在,因为它没有得到更新。我删除了旧的 access_token 并确认现在不再创建 access_token。

我读到有关解析结果 JSON 给其他人带来问题,因为它不是文本。我真的不相信这是问题所在,我的是单个值,不是结构也不是数组,但决定安全使用并将其字符串化。根据当前文档,我将脚本更改为:

response = JSON.parse(responseBody);
access_token = response.access_token;
console.log (access_token);   // I can see the token in the console - parsing executed correctly
pm.environment.set("access_token",JSON.stringify(access_token)); // setting the environment variable
console.log(pm.environment.get("access_token")); // getting the exact same environment variable I have just set - I can see this on the console as well
console.log("WTF?!?!?");  // Self explanatory - added at the end to ensure all instructions in the script are read and executed - I see this every time as well

这也不起作用(有或没有 stringify)并给我相同的结果。控制台上的一切似乎都很好,但是当我查看我的环境变量时, access_token 不存在,尽管我可以在测试脚本的执行过程中访问它。后来就没了

在这一点上,我感到沮丧和不知所措 - 有没有其他人看到过类似的行为,或者我是否遗漏了一些简单到愚蠢的事情?

您好,请使用稳定的 postman 版本:

https://www.postman.com/downloads/

Canary 构建通常用于 Beta 测试,问题似乎存在并且我提出了一个错误:https://github.com/postmanlabs/postman-app-support/issues/9412

更新问题现已解决:https://github.com/postmanlabs/postman-app-support/issues/9412