邮递员脚本:无法通过测试脚本保存环境变量

Postman scripting: cannot save environment variable via test script

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

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

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

如果我确实在 管理环境 部分声明了它,那么它就可以工作了^

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

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

我的一个请求中包含以下代码片段:

{
    "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 脚本的信息吗?

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

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

使用类似这样的方法应该可行:

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