邮递员测试-带有http状态的条件

时间:2019-02-25 14:54:47

标签: javascript http testing http-status-code-404 postman

我想检查答案是否正确。响应代码为200或500时,它是正确的。后者需要区分响应正文中的字符串是正确还是不正确。应该在一个测试中。

我已经尝试过简单的if子句,但是它们不起作用。

pm.test("response is ok", function(){
    if(pm.response.to.have.status(200)){
        //do things
    }     
});

编辑:

我使用的解决方案是

pm.test("response is valid", function(){
if(pm.response.code === 200){
    //is ok
} else if (pm.response.code === 500){
    if(pm.expect(pm.response.json().message).to.include("xyz")){
        //is ok
    } else {
       pm.expect.fail("Error 500"); 
    }
} else {
    pm.expect.fail("statuscode not 200 or 500");
}

});

2 个答案:

答案 0 :(得分:1)

这是基本的操作,如果状态代码为200,则会将该消息记录到控制台:

pm.test('Check Status', () => {
    if(pm.response.code === 200) {
        console.log("It's 200")
    }
})

如果随后需要在response body中进行检查,则可以执行以下示例。

这只是向GET发送一个简单的http://jsonplaceholder.typicode.com/posts/1请求

此响应的正文为:

{
    "userId": 1,
    "id": 1,
    "title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
    "body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
}

我们可以在Tests标签中添加一个检查,以确认id属性的值为1,只有在response code时才运行此检查是200

if(pm.response.code === 200) {
    pm.test('Check a value in the response', () => {
        pm.expect(pm.response.json().id).to.eql(1)
    })
}

这是您可以做什么的非常基本且非常简单的示例。根据您自己的情况,它会更复杂,但希望它可以解释您如何做到这一点。

答案 1 :(得分:0)

请求是异步还是同步? 也许您正在尝试检查尚未收到的回复。

尝试以下方法异步发送请求:

var xhr = new XMLHttpRequest();
xhr.open('GET', "https://my-end-point-url", true);
xhr.send();

然后使用它来处理请求并将响应显示为弹出窗口:

xhr.onreadystatechange = (e) => {
  if (xhr.readyState == 4 && xhr.status == 200) {
    var response = JSON.parse(xhr.responseText);
    alert(response)
  }
}