Как проверить правильность параметров тела запроса POST в сценарии предварительного запроса? - PullRequest
1 голос
/ 07 апреля 2020

У меня есть несколько необязательных параметров в JSON необработанных данных в моем теле запроса, и я хочу проверить в сценарии предварительного запроса в Postman, есть ли эти параметры в теле или нет.

{
  "stores": [
    {
      "city": "Tokyo",
      "name": "Church Street"
      ....
      ....
    }
  ]
}

Как проверить, переданы ли city и name в теле запроса?

Ответы [ 2 ]

1 голос
/ 07 апреля 2020

Вы можете использовать функцию pm.test с утверждениями pm.expect в Pre-request Scripts.

Поскольку Postman поставляется с Loda sh, вы можете использовать функцию _. Get () в песочнице, чтобы получить данные из массива stores. Вам нужно было бы использовать JSON.parse() для правильного назначения данных из тела запроса в функции _.get().

let requestBody = _.get(JSON.parse(pm.request.body.raw), 'stores[0]')

pm.test("Check Body", () => {
    pm.expect(requestBody).to.have.keys(['city', 'name'])
})

Или что-то подобное без Loda sh:

let requestBody = JSON.parse(pm.request.body.raw)

pm.test("Check Body", () => {
    pm.expect(requestBody.stores[0]).to.have.keys(['city', 'name'])
})

Более подробную информацию об API pm.* можно найти здесь:

https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/

0 голосов
/ 07 апреля 2020

Используйте pm.test, поскольку вы можете видеть тело запроса, тип содержимого, содержимое ответа в результатах выполнения. В результатах экспорта слишком много деталей.

Тело запроса теста:

pm.test(JSON.parse(pm.request.body));

Тест URLE, закодированный с телом запроса:

pm.test(JSON.stringify(pm.request.body.urlencoded.toObject(true)));

Тест необработанного текста в теле запроса:

 pm.test(JSON.parse(pm.request.body.raw));

Пример:

var reqBody = request.data; //JSON.parse(request.data);
tests["Data"] = reqBody.stores[0].city !== null;
...