Тесты Почтальона - Кондиционирование с http статусом - PullRequest
0 голосов
/ 25 февраля 2019

Я хочу проверить, в порядке ли ответ.Это либо правильно, когда код ответа равен 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 голосов
/ 25 февраля 2019

Это было бы что-то базовое, что записывало бы это сообщение на консоль, если бы код состояния был 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)
    })
}

Это очень простой и очень простой пример того, что вы могли бы сделать.Это будет более сложным в зависимости от вашего собственного контекста, но, надеюсь, это объясняет, как вы можете это сделать.

0 голосов
/ 25 февраля 2019

Является ли запрос асинхронным или синхронным?Возможно, вы пытаетесь проверить ответ, который еще не пришел.

Попробуйте отправить асинхронно запрос:

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)
  }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...