Что пишут в блогах

Подписаться

Что пишут в блогах (EN)

Разделы портала

Онлайн-тренинги

.
Использование переменных в Postman
21.02.2019 00:00

Автор: Кристин Джеквони (Kristin Jackvony)
Оригинал статьи
Перевод: Ольга Алифанова

Сегодня мы поговорим о множестве способов использовать переменные в Postman. Мы будем пользоваться ранее созданной нами коллекцией запросов, поэтому посмотрите предыдущие статьи, прежде чем читать дальше.

Первое, что нужно понимать о переменных в Postman: они организуются в окружения. Postman-окружение – это просто коллекция переменных, которые можно использовать в коллекции Postman. Создать окружение очень просто. Нажмите на значок шестеренки в правом верхнем углу окна, а затем на кнопку "Add". Дайте окружению имя (например, "Pet Store"), а затем нажмите на "Add".


Окружение ничем вам не поможет, пока вы не создадите в нем переменные, поэтому давайте этим и займемся. После добавления нового окружения вы должны были вернуться в окно "Manage Environments". Нажмите на вашем окружении, чтобы отредактировать его. В секции "key" введите petId, а в "value" введите 100. Нажмите на кнопку "Update", и вот вы добавили новую переменную.


Закройте окно "Manage Environments". В правом верхнем углу вы увидите выпадающее меню, и сейчас там написано "No Environment". Кликните на селекторе и выберите "Pet Store". Теперь при запуске запросов в вашей коллекции они будут выполняться в окружении "Pet Store".

У нас уже настроена одна переменная – petId, равная 100. Давайте посмотрим, как мы можем ее использовать!

Во-первых, ее можно использовать в URL. В запросе "Verify Add Pet" измените URL с http://petstore.swagger.io/v2/pet/100 на http://petstore.swagger.io/v2/pet/{{petId}}. После добавления переменной вы увидите, как {{petId}} перекрасится в оранжевый цвет. Postman распознал переменную из выбранного окружения. Если вы забудете установить окружение (о нем легко забыть), вы увидите, что ваша переменная {{petId}} красного цвета. Сохраните изменения и запустите запрос (возможно, вначале вам понадобится запустить запрос "Add Pet", чтобы в базе точно появился питомец с id 100). Вы увидите, что запрос соответствует питомцу с id 100 по ответу на этот запрос.

Переменную можно также использовать в заголовках запроса. В этой коллекции мы не будем этим заниматься, но пример такого использования – это отправка токена авторизации вместе с запросом. Вместо того, чтобы каждый раз вводить токен, вы можете сохранить его как переменную по имени "token", а затем передавать ее в заголовке вот так: {{token}}.

Возвращаясь к нашей переменной petId: мы можем использовать ее в теле запроса. Откройте запрос "Add Pet" и измените тело запроса, чтобы оно выглядело так:

{
  "id": "{{petId}}",
  "category": {
    "id": 1,
    "name": "Cat"
  },
  "name": "Grumpy Cat",
  "photoUrls": [
    "https://pbs.twimg.com/profile_images/948294484596375552/RyGNqDEM_400x400.jpg"
  ],
  "tags": [
    {
      "id": 1,
      "name": "Mixed breed"
    }
  ],
  "status": "available"
}
 

Мы заменили id 100 на нашу переменную. Можно отметить, как это полезно для тестирования. Предположим, мы решили не добавлять питомца с id 100, а предпочли другое значение. Это легко изменить, потому что нам нужно изменить одну переменную в одном месте (в окружении Pet Store), а не менять ее в каждом запросе, где использовался id 100. Не забудьте сохранить ваш запрос "Add Pet".

Еще мы можем использовать переменную в правилах. Вернитесь к запросу "verify Add Pet" и добавьте вот такое правило в секцию "Tests":

var jsonData = JSON.parse(responseBody);

tests["Correct pet ID is returned"] = jsonData.id == environment.petId;

Как можно заметить, это правило отличается от прочих правил нашего запроса. Другие правила написаны в новом стиле правил Postman, а это – в старом (если кто-то знает, как написать это правило в новом стиле, сообщите, пожалуйста!). Это правило сравнивает id, который возвращен телом ответа (jsonData.id) с id, установленной в качестве переменной окружения (environment. petId). Сохраните этот запрос и прогоните его, и увидите, как правило отработает.

И, наконец, мы можем устанавливать переменные окружения в зависимости от тела ответа на запрос. Давайте продублируем наш запрос "Add Pet" (см. статью "Создание коллекции Postman" для инструкций), и переименуем копию в "Add Pet With No Id". Мы будем использовать этот запрос для добавления питомца без указания id, чтобы программа назначила его самостоятельно. Измените тело запроса вот так:

{
  "category": {
    "id": 1,
    "name": "Cat"
  },
  "name": "Grumpy Cat",
  "photoUrls": [
    "https://pbs.twimg.com/profile_images/948294484596375552/RyGNqDEM_400x400.jpg"
  ],
  "tags": [
    {
      "id": 1,
      "name": "Mixed breed"
    }
  ],
  "status": "available"
}


Обратите внимание, что id, находившийся в начале запроса (petId) теперь удален. Теперь перейдите во вкладку "Tests" и добавьте там инструкцию:

var jsonData = JSON.parse(responseBody);

postman.setEnvironmentVariable("newPetId", jsonData.id);

Это правило интерпретирует JSON-данные и устанавливает значение id, возвращенное сервером, в качестве новой переменной окружения по имени "newPetId". Обратите внимание, что и эта инструкция написана в старом стиле. Давайте сохраним наш запрос и запустим его. После прогона запроса нажмите на иконку глаза в правом верхнем углу экрана. Это быстрый просмотр окружения, позволяющий вам увидеть его переменные. Вы должны увидеть новую переменную newPetId со значением, присвоенным id вашего свежесозданного питомца! Эта фича позволяет вам не мучиться с созданием переменной заранее: Postman сделает это за вас!

Мы рассмотрели только одну переменную – petId. Вы можете добавить переменные для имени питомца, ссылок на фото, тип статуса, и чего угодно еще. Попрактикуйтесь в вашей коллекции запросов. Чем больше переменных вы создадите, тем легче будет поддерживать ваши тесты.

Больше информации по этой теме вы можете получить в курсе Тестирование REST API

Предыдущие статьи на эту тему

Введение в REST-запросы и тестирование GET-запросов

Тестирование POST-запросов

Тестирование PUT-запросов

Создание коллекции в Postman

Добавление правил в Postman

Обсудить в форуме