如何在 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 测试中读取环境变量?的主要内容,如果未能解决你的问题,请参考以下文章