【问题标题】:Postman Test with comparison to global variable与全局变量比较的邮递员测试
【发布时间】:2020-05-15 18:32:18
【问题描述】:

我想在Postman 中编排两个请求。第一个响应会给我一个变量。我将此 id 保存到全局变量 id。在 Postman 中,这个变量通常可以通过 {{id}} 访问。

然后我用这个 id 发送第二个请求(比如GET foo.bar/{{id}})。现在我想检查一下 id 是否也在结果中。

这是我在测试代码中尝试的:

    var jsonData = pm.response.json();
    pm.expect(jsonData.id).to.eql({{id}});

其中id是来自第一个响应的变量(例如72b302bf297a228a75730123efef7c41)。

第二个请求的响应看起来是这样的。像这样:

{
    "id": "72b302bf297a228a75730123efef7c41"
}

这里有一些也不起作用的例子:

    var jsonData = pm.response.json();
    pm.expect(jsonData.id).to.eql("{{id}}");
    var jsonData = pm.response.json();
    var myId = {{id}};
    pm.expect(jsonData.id).to.eql(myId);

我的期望是,测试将是肯定的,并且请求中的 `id 将在响应中找到。

您知道如何解决这个问题吗?

感谢您的帮助。

【问题讨论】:

    标签: postman postman-testcase


    【解决方案1】:

    {{...}} 语法不能这样使用,在沙盒环境中,您需要以这种方式访问​​它。

    pm.expect(jsonData.id).to.eql(pm.globals.get('id'))

    测试语法是:

    pm.test("IDs equal?", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.id).to.eql(pm.globals.get('id'))
    });
    

    【讨论】:

    • 嗨,丹尼,感谢您的帮助。我试过pm.test("IDs equal?", function () { var jsonData = pm.response.json(); pm.expect(jsonData.id).to.eql('{{id}}'); });该程序之前不允许转换id变量,所以...to.eql('id')是不可能的(据我所知)。这是周围的代码:pm.test("IDs equal?", function () { var jsonData = pm.response.json(); pm.expect(jsonData.id).to.eql('{{id}}'); }); 有没有办法将 id 作为变量放入eql(.)
    • 我为你写了正确的期望语句,你试过了吗。如果你有 id 变量存储在前一个请求的全局级别,那就可以了。
    • 我没有看到的是pm.globals.get()。我的错。你给出了正确的提示。以下代码有效:pm.test("IDs equal?", function () { var jsonData = pm.response.json(); pm.expect(jsonData.id).to.eql(pm.collectionVariables.get('id')); });
    • 所以你没有将它保存为global 变量,正如你在原始问题中提到的那样。 :)
    猜你喜欢
    • 2018-02-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-07-18
    • 2018-06-27
    • 2013-09-06
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多