如何在 Postman 测试中读取环境变量?

Posted

技术标签:

【中文标题】如何在 Postman 测试中读取环境变量?【英文标题】:How do I read environment variables in Postman tests? 【发布时间】:2014-02-20 12:21:46 【问题描述】:

我正在使用 Postman 的打包应用版本针对我的 Rest API 编写测试。我正在尝试管理连续测试之间的状态。为了方便这一点,暴露给 javascript 测试运行时的 Postman 对象具有设置变量的方法,但没有用于读取的方法。

postman.setEnvironmentVariable("key", value );

现在,我可以通过 key 结构在下一次调用中读取该值,该结构从当前环境中吸收值。但是,这在测试中不起作用;它只适用于请求构建的东西。

那么,是否可以从测试中读取这些内容?

【问题讨论】:

【参考方案1】:

根据文档here,您可以使用

environment["foo"] OR environment.foo
globals["bar"] OR globals.bar

访问它们。

即;

postman.setEnvironmentVariable("foo", "bar");

tests["environment var foo = bar"] = environment.foo === "bar";

postman.setGlobalVariable("foobar", "1");

tests["global var foobar = true"] = globals.foobar == true;

postman.setGlobalVariable("bar", "0");

tests["global var bar = false"] = globals.bar == false;

【讨论】:

我注意到的一件事是,当我设置全局变量时,我将其设置为 int;当我读回来时,它是一个字符串。所以我需要解析它:tests["stress"] = data.Rating.RatingScoreList[1].Value === parseInt(globals.stress); 来自文档here:“警告 - 环境和全局变量将始终存储为字符串。如果您要存储对象/数组,请务必在存储之前对其进行 JSON.stringify(),和 JSON.parse() 检索它们。” 另请注意,如果您打算使用postman monitors,则不支持全局变量,而环境变量则支持。【参考方案2】:

Postman 更新了他们的沙箱并添加了 pm.* API。尽管在测试脚本中读取变量的旧语法仍然有效,但根据docs:

设置变量后,使用pm.variables.get() 方法,或者, 或者,使用pm.environment.get()pm.globals.get() 方法取决于适当的范围来获取变量。这 方法需要变量名作为参数来检索 将值存储在脚本中。

【讨论】:

以上是关于如何在 Postman 测试中读取环境变量?的主要内容,如果未能解决你的问题,请参考以下文章

postman使用之四:设置读取变量和切换环境

postman 第4节 切换环境和设置读取变量(转)

postman如何设置环境变量和全局变量

postman使用--环境变量

postman环境变量和全局变量

postman 添加环境变量 并 读取变量 作为参数 传入,跑整个场景