Почтальон Newman обрабатывает коды статуса

У меня вопрос, можно ли в тесте проверить несколько кодов состояния. Случай 201, когда пользователь создан, и 409, когда пользователь уже существует, когда я повторно запускаю тестовые примеры с той же партией пользователей. 201 обрабатывается, а 409 нет. а

 var data = pm.response.json()
 pm.test("Status test", function () {
  return  pm.response.to.have.status(200) || pm.response.to.have.status(409);
     
});


There was an error in evaluating the test script:  JSONError: Unexpected token 'U' at 1:1 User already Exists ^

РЕДАКТИРОВАТЬ:

Для 200 я получаю объект пользователя, я не могу опубликовать этот объект здесь

для 409 строка Пользователь уже существует


person Exc    schedule 22.09.2020    source источник
comment
Не могли бы вы показать ответные органы для обоих случаев?   -  person Christian Baumann    schedule 22.09.2020
comment
пожалуйста, посмотрите отредактированный пост   -  person Exc    schedule 22.09.2020


Ответы (1)


Более элегантный способ проверить статус 200 или 409:

pm.expect(pm.response.code).to.be.oneOf([200, 409]);

Ошибка возникает при статусе 409, потому что тогда запрос возвращает не JSON, а строку. Я бы поставил что-то вроде

if (pm.response.code == 200) {
    var data = pm.response.json()
    // your code
}

Но я вам настоятельно не советую этого делать! Что касается тестирования, вы хотите, чтобы один тест проверял только одно. В противном случае это, скорее всего, приведет к недопониманию и увеличению затрат на техническое обслуживание.

Предлагаю создать один запрос на создание пользователей с соответствующими тестами. И еще один, который пытается воссоздать пользователей, снова с соответствующими тестами.

person Christian Baumann    schedule 22.09.2020
comment
я добавляю ваш код pm.test (проверка состояния, функция () {pm.expect (pm.response.code) .to.be.oneOf ([200, 409]);}); но все еще не удалось, я получаю это как тестовый результат, когда возвращается 409. Произошла ошибка при оценке тестового сценария: JSONError: Неожиданный токен 'U' при 1: 1 Пользователь уже существует ^ - person Exc; 22.09.2020
comment
Когда статус равен 409, запрос не возвращает JSON, из-за этого var data = pm.response.json() в первой строке не работает. Вот почему я добавил if (code == 200) {...}, чтобы попытаться проанализировать ответ как JSON, когда статус в порядке и JSON был возвращен. - person Christian Baumann; 22.09.2020