访问邮递员中的收集变量

时间:2017-12-06 17:54:36

标签: postman

功能

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

用例

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

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

问题

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

临时解决方案

作为一个完整的黑客,我将我需要的东西存储为命名空间环境变量。它并不理想(在其他系列中工作时会让事情变得混乱)但它的效果还不错。

3 个答案:

答案 0 :(得分:17)

收集变量

您可以使用pm.variables.get("variableName")访问请求前和测试脚本部分中的集合变量(以及所有变量)。

但是,您只能按editing the collection details via modal定义和更新集合变量。

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

答案 1 :(得分:4)

Postman v7.9.0添加了对新pm.collectionVariables的支持,因此您可以在测试脚本上对其进行更新:

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

https://github.com/postmanlabs/postman-app-support/issues/5053#issuecomment-542555156

答案 2 :(得分:0)

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

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

虽然 joseluislopez87 已经正确回答了问题,但我 添加此答案是为了帮助消除任何剩余的困惑。


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

我创建了一个名为 ManipCollVars
的 Postman 集合 (ManipulateCollectionVariables 似乎有点太长了)。
您可以从以下位置下载并保存到本地驱动器:
https://schulze.000webhostapp.com/postman/variables/ManipCollVars.pm_coll.json

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

Import the collection ManipCollVars.


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

Edit the collection properties of ManipCollVars.


如下图所示,点击变量标签。 注意 CURRENT VALUECollectionVar 是如何 等于 Initial Value。关闭 EDIT COLLECTION 窗口。

Notice: the initial value of CollectionVar equals Initial Value.


点击请求 ManipCollVars-Request,然后点击它的 Tests 标签如下图所示。
忽略这两个测试,而是专注于第 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"?

The Tests contents.


点击蓝色的发送按钮,然后打开Console 左下角。见下图。 请注意集合变量的值如何从 Initial Value 更改为 Some New Value。 - 问题已解决!

The value of CollectionVar has changed to Some New Value.


要仔细检查该值是否确实已更改,请再次单击 集合名称旁边的省略号 (? ? ?),位于 Edit 上, 然后在 Variables 标签上。见下图。 请注意 CURRENT VALUECollectionVar 现在如何 Some New Value。 - 确认!

The value of CollectionVar has changed to Some New Value.


参考资料