【问题标题】:Accessing Collection Variables in Postman在 Postman 中访问集合变量
【发布时间】:2018-05-20 16:56:06
【问题描述】:

功能

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

用例

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

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

问题

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

临时解决方案

作为一个完整的技巧,我将我需要的东西存储为命名空间环境变量。这并不理想(在其他集合中工作时会有些混乱),但效果很好。

【问题讨论】:

标签: postman


【解决方案1】:

集合变量

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

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

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

【讨论】:

  • 看起来 pm.variables.get() 对于我目前想要完成的工作正常。谢谢!
【解决方案2】:

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

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

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

【讨论】:

  • 对于 2019+ 年阅读本文的人来说,这是正确的答案。 Postman 应该创建集合变量 sn-ps!
  • 访问 baseUrl 使用pm.collectionVariables.get("baseUrl")
  • 我已将此更新为已接受的答案(我同意凯尔的上述评论,从 2019 年 10 月 27 日开始 - stackoverflow.com/questions/47680580/…
【解决方案3】:

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

设置集合变量在脚本中而不仅仅是手动变成 可能在 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。)


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


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


点击请求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"?


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


要仔细检查该值是否确实发生了变化,请再次单击 省略号 (? ? ?) 在集合名称旁边,Edit, 然后在Variables 选项卡上。见下图。 注意CollectionVarCURRENT VALUE 现在是怎样的 Some New Value。 - 确认!


参考文献

【讨论】:

    猜你喜欢
    • 2020-02-07
    • 1970-01-01
    • 2019-01-27
    • 1970-01-01
    • 2020-11-18
    • 1970-01-01
    • 2022-10-25
    • 2012-10-07
    • 2021-09-25
    相关资源
    最近更新 更多