【问题标题】:Postman - how to get "message" when POST request returns 400 Error邮递员 - 如何在 POST 请求返回 400 错误时获取“消息”
【发布时间】:2019-07-21 17:13:14
【问题描述】:

我在 Postman 中有一个 POST 请求,测试如下

pm.test("CREATED - Status code is 201", function () {
    pm.response.to.have.status(201);
});

var namespaceLink = postman.getResponseHeader("Location");
var namespaceId = namespaceLink.substring(namespaceLink.lastIndexOf('/') + 1);

pm.environment.set("IdOfNamespace", namespaceId);

请求失败并显示“400 Bad Request”。 在这种情况下,我希望测试失败并出现“预期 201 但得到 400”,但测试失败并出现以下“评估测试脚本时出错:TypeError: Cannot read property 'substring'未定义的" 我还在响应正文中收到以下消息:“命名空间 'AUTO_NS' 已经在使用此代码

由于请求作为自动化测试的一部分运行(有很多请求)然后生成报告,我想设置测试的方式在报告中更清楚地说明原因失败。 IE。来自响应正文的消息。

您能帮我解答一下(作为测试的一部分)吗?

【问题讨论】:

  • 测试将与pm.test() 函数之外的其他代码分开运行和失败。如果Location 响应标头不是失败响应的一部分,那么它也不会知道namespaceLink 是什么参考。您可以将其包装在 if 语句或 try/catch 块中吗?

标签: postman


【解决方案1】:

您只需将代码放在测试函数中即可。当您的pm.response.to.have.status(201); 断言失败时,chai 会抛出 AssertionError,这意味着您的测试函数中的其他行将不会被执行。在其他情况下,你很高兴。试试这个:

pm.test("CREATED - Status code is 201", () => {
    pm.response.to.have.status(201);
    const namespaceLink = postman.getResponseHeader("Location");
    const namespaceId = namespaceLink.substring(namespaceLink.lastIndexOf('/') + 1);
    pm.environment.set("IdOfNamespace", namespaceId);
});

【讨论】:

    猜你喜欢
    • 2018-07-22
    • 2018-07-07
    • 1970-01-01
    • 2017-07-12
    • 1970-01-01
    • 2015-06-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多