【问题标题】:Postman scripting: cannot save environment variable via test script邮递员脚本:无法通过测试脚本保存环境变量
【发布时间】:2019-04-23 01:40:15
【问题描述】:

我有几个请求作为我的集合的一部分,并希望使用 JSON 响应输出中的值设置一个环境变量。

此变量未在 管理环境 部分中定义。

我必须首先在 Manage Environments 部分下声明环境变量吗?

如果我确实在 Manage Environments 部分中声明了它,那么它正在工作^

const jsonData = pm.response.json();
pm.environment.set('sessionId', jsonData.sessionId);

我的另一个问题是我不知道为什么会这样?

我的一个请求中有以下代码 sn-p:

{
    "sessionid": "15c3f72e-788f-423f-b1cc-5dca503ae859",
    "expires": "2019-02-17T20:57:20.24234222-08:00",
    "cookievalue": "MySession"
}

pm.test("Check if session id is returned"), function() {
    pm.expect(pm.response.text()).to.include("sessionid2");
}

我很惊讶为什么这会起作用?

它应该会失败,因为我在 JSON 响应中没有 sessionid2

我尝试了所有其他方法,包括pm.response.json(),但没有任何效果。

顺便说一句,我如何测试以查看密钥是否存在于 JSON 响应中,而不一定要检查值,因为会话 id 值可能每次都更改?

除了文档之外,有人可以向我指出一个很好的资源来了解有关 Postman 脚本的更多信息吗?

【问题讨论】:

    标签: postman postman-collection-runner


    【解决方案1】:

    关于保存环境变量的第一个问题,您需要先创建一个环境文件,以便它知道在哪里保存变量。如果您不想先创建文件,则可以使用 pm.globals.set() 函数。

    对于第二个问题,您的 test 语法似乎是错误的,因为您已通过在测试名称后添加额外的 ) 来关闭测试。

    使用这样的东西应该可以:

    pm.test("Check if session id is returned", function() {
        pm.expect(pm.response.json()).to.include.key("sessionid");
    })
    

    【讨论】:

    • 感谢@danny。我没有看到从 Postman 中创建环境文件的选项。请指教。另外,您能否参考文档以外的任何其他有用的博客,以了解有关 Postman 和可能的 Newman 的更多信息?
    • 您是否查看过 Postman 文档、YouTube 频道...google 等。它是一种广泛使用的工具,因此那里有大量信息。我有一个 github 存储库,如果你也想检查一下,我们与不同的邮递员相关的东西。
    • 太棒了。可以告诉我github url吗?
    猜你喜欢
    • 2020-04-11
    • 2017-02-21
    • 2020-07-13
    • 2021-10-26
    • 2021-06-28
    • 1970-01-01
    • 2019-05-17
    • 2016-12-23
    • 1970-01-01
    相关资源
    最近更新 更多