在Postman中访问集合变量

在Postman中访问集合变量,postman,Postman,功能 Postman为集合添加了对变量、授权、预请求和测试脚本的支持。(从版本5.4.1开始,这在集合和文件夹级别都存在) 用例 假设我想在登录端点被命中时存储一个刷新令牌。我的测试脚本需要创建/更新集合变量,而不是全局或环境变量 一旦集合、其他测试和预请求脚本可以使用refresh_令牌,我认为有一种方法可以通过类似于pm.environment或pm.globals的API访问它们。(例如,pm.collection) 问题 我找不到任何关于如何通过预请求脚本或测试访问或修改这些内容的文档。

功能

Postman为集合添加了对变量、授权、预请求和测试脚本的支持。(从版本5.4.1开始,这在集合和文件夹级别都存在)

用例

假设我想在登录端点被命中时存储一个刷新令牌。我的测试脚本需要创建/更新集合变量,而不是全局或环境变量

一旦集合、其他测试和预请求脚本可以使用refresh_令牌,我认为有一种方法可以通过类似于pm.environment或pm.globals的API访问它们。(例如,pm.collection)

问题

我找不到任何关于如何通过预请求脚本或测试访问或修改这些内容的文档。。。有人知道怎么做吗?也许这还没有完全考虑出来,或者还没有完全实现,但我想我会向其他人寻求帮助

临时解决方案


作为一个完整的黑客,我将需要的东西存储为名称空间的环境变量。它并不理想(在其他集合中工作时会使事情变得有点混乱),但它工作得很好。

集合变量

您可以使用访问预请求和测试脚本部分中的集合变量(以及所有变量)

但是,只能通过定义和更新集合变量


注意:对于当前使用环境变量的解决方案,请记住,您可以始终使用
pm.environment.set()
重置该值,或使用
pm.environment.unset()
清除该值。

Postman v7.9.0增加了对新
pm.collectionVariables
,因此,您可以在测试脚本上更新它们:

pm.collectionVariables.set("collection_variable", newValue);

手动设置收集变量,然后获取它们 总是可能的

在脚本中设置集合变量,而不仅仅是手动设置 可能在2019年10月发布的版本7.9.0中。 在写这篇文章时,仍然有很多关于它的过时的错误信息 在外面,在互联网上,但不幸的是在这里 堆栈溢出

虽然约瑟鲁伊斯洛佩兹87已经正确地回答了这个问题,但我很高兴 添加此答案是为了帮助清除任何剩余的混淆


为了找出谁对谁错,我做了一个简单的小实验。
下面我来描述一下我做了什么。我解释了如何复制完全相同的 自己做实验

我已经创建了一个名为ManipCollVars的邮递员收藏 (ManufacteCollectionVariables似乎有点太长了)。
您可以从以下位置下载并保存到本地驱动器:

然后-从邮递员桌面应用程序(而不是chrome扩展程序)-导入
ManipCollVars
如下图所示。 (GET请求是
https://postman-echo.com/get


要查看集合变量
CollectionVar
的初始值, 单击集合名称旁边的三个小圆圈(工具提示: 查看更多操作)。然后单击编辑。请参见下图


如下图所示,单击变量选项卡。 请注意
CollectionVar
当前值是如何变化的
等于
初始值
。关闭
编辑收藏
窗口


单击请求
ManipCollVars请求
,然后单击其
测试
选项卡,如下图所示。
忽略这两个测试,而是关注第7-11行:

// Will now try to change `CollectionVar` to some new value:
pm.collectionVariables.set('CollectionVar', 'Some New Value');
// Then print the new value of `CollectionVar` to the console:
console.log(pm.collectionVariables.get('CollectionVar'));
// ^^ Does `collVar` contain "Initial Value" or "Some New Value"?


单击蓝色的发送按钮,然后在中打开
控制台
左下角。请参见下图。 请注意集合变量的值如何从
初始值
更改为
一些新值
-问题解决了


要再次检查该值是否确实已更改,请再次单击 在
Edit
上,集合名称旁边的省略号(???), 然后在
变量
选项卡上。请参见下图。
请注意
CollectionVar
当前值现在是如何变化的
一些新值
-确认


参考资料


看起来pm.variables.get()对于我目前正在尝试完成的工作来说是正确的。非常感谢。你创建了一个吗?我想是这样的。对于2019+年阅读此文章的人来说,这是正确的答案。邮递员应该创建集合变量片段!要访问baseUrl,请使用
pm.collectionVariables.get(“baseUrl”)
。我已将其更新为可接受的答案(我同意Kyle的上述评论,从2019年10月27日起-)