Утверждение всего тела ответа в почтальоне

Недавно я начал работать над проектами весенней загрузки. Я ищу способ подтвердить весь ответ моего API. Это сделано для того, чтобы сократить время тестирования API.

Найдено несколько решений, упомянутых ниже, но ничего не помогло мне решить проблему.

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});


pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

Когда я помещаю в качестве аргумента все тело ответа, я получаю следующие ошибки.

  1. Незакрытая строка

2.  введите описание изображения здесь

3.  введите описание изображения здесь


person Tushar Banne    schedule 01.01.2018    source источник
comment
Вам нужно утверждать против строки? Ваш тест проверяет JSON, но в виде строки это не кажется хорошим подходом. Зачем помечать вопрос с помощью JSON?   -  person Danny Dainton    schedule 02.01.2018


Ответы (2)


Если вы хотите использовать тот же тип кавычек, который вы определили внутри строки, вы должны их избежать:

  • 'string with "quotes"'
  • "string with 'quotes'"
  • 'string with \'quotes\''
  • "string with \"quotes\""

Вероятно, вы захотите заключить свой json в одинарные кавычки, поскольку они не разрешены самим json.

person pishpish    schedule 01.01.2018
comment
Поскольку Postman использует JS в тестах / сценариях предварительного запроса, вы также можете использовать серьезный акцент. Учтите: `string with both 'single quotes' and "double quotes` - person n-verbitsky; 14.04.2020

Вы можете попробовать установить ответ как переменную, а затем подтвердить это?

var jsonData = pm.response.json()

pm.environment.set('responseData', JSON.stringify(jsonData))

Отсюда вы можете получить данные JSON.parse(pm.enviroment.get('responseData')) и затем использовать их в любом тесте для проверки всех значений.

pm.test("Body is correct", () => {
    var jsonData = pm.response.json()
    pm.expect(jsonData).to.deep.equal(JSON.parse(pm.environment.get('responseData')))
})

Я считаю, что вы все равно пытаетесь протестовать против JSON, но делаете это как обычную текстовую строку.

Или вы можете утверждать значения отдельно, например:

pm.test("Body is correct", () => {
    var jsonData = pm.response.json()
    pm.expect(jsonData[0].employeeName).to.equal("tushar")
    pm.expect(jsonData[0].phNum).to.equal(10101010)
})

В зависимости от структуры JSON вам может не потребоваться доступ к массиву данных, и [0] можно удалить.

person Danny Dainton    schedule 01.01.2018