Вопрос или проблема
Я занят тестированием некоторого веб API и пытаюсь использовать Postman для автоматизации этого процесса.
Насколько я вижу, тестовые сценарии в Postman всегда привязаны к одному запросу, поэтому, если я хочу протестировать разные сценарии для одного и того же запроса, мне придется сделать копию этого запроса для каждого сценария, причем каждая копия будет иметь свой уникальный тестовый сценарий. Я хотел бы этого избежать.
Пример: у меня есть запрос, который получает определенный ресурс, и я хочу протестировать его с токеном доступа и без:
- Запрос без токена доступа: ожидаемый статус 401
- Запрос с действительным токеном доступа: ожидаемый статус 200
Другой пример: я создаю какой-то ресурс на сервере, а затем пытаюсь создать то же самое снова:
- В первый раз: ожидаемый статус 200
- Во второй раз: ожидаемый статус 409
Я нашел несколько связанных вопросов, но все они, похоже, предусматривают много скриптинга, где по сути вы пишете свою собственную среду тестирования. Как разработчик, я не против писать скрипты, но в данном случае я хотел бы сосредоточиться на написании фактических тестов.
Таким образом, мой вопрос заключается в следующем: может ли Postman это сделать, или это, возможно, не лучший инструмент для этой работы?
Вам не нужно делать множество копий любого запроса. Просто адаптируйте свои скрипты после ответа для всех необходимых случаев.
В первый раз: ожидаемый статус 200
Во второй раз: ожидаемый статус 409
Установите переменную коллекции, которая указывает на статус создания, если первый запрос был успешным:
pm.collectionVariables.set("objectCreated", true);
А в начале скрипта считайте значение, чтобы изменить поток:
const created = pm.collectionVariables.get("objectCreated");
if (created) {
// тест на 409
} else {
// тест на 200 и установите переменную коллекции, если успешно
}
Вызывайте запрос дважды.
Запрос без токена доступа: ожидаемый статус 401
Запрос с действительным токеном доступа: ожидаемый статус 200
Случай аналогичен предыдущему, но используйте синтаксис {{accessToken}}
для представления переменной коллекции accessToken
в заголовке или теле запроса. Затем проверьте в скрипте после ответа, была ли переменная пустой, разделив оба случая и протестировав правильный код ответа.
Затем выполните запрос с введенным действительным accessToken
и с его очищенным значением.
Если вы не знаете, как автоматизировать данные, вот документация. Кратко: в runner коллекций используйте JSON файл данных, такой как этот:
[
{
"accessToken": "xyz"
},
{
"accessToken": ""
}
]
Ответ или решение
Да, вы можете переиспользовать один и тот же запрос в Postman для различных тестов без необходимости создавать его копии. Для этого достаточно адаптировать скрипты после выполнения запроса, чтобы они могли обрабатывать различные сценарии тестирования.
Обработка различных сценариев тестирования
Вам не нужно дублировать запросы, если вы можете контролировать логику выполнения тестов с помощью переменных и условий в ваших скриптах.
Пример 1: Тестирование с токеном доступа
Если у вас есть запрос, который требует токен доступа, вы можете использовать переменные коллекции. Например:
- Запрос без токена доступа: ожидаемый статус 401.
- Запрос с действительным токеном доступа: ожидаемый статус 200.
Для реализации этого сценария вы можете:
- В заголовках запроса использовать синтаксис
{{accessToken}}
для передачи токена. - В скрипте после выполнения запроса проверять значение переменной
accessToken
.
Пример кода в скрипте после выполнения запроса:
const accessToken = pm.collectionVariables.get("accessToken");
if (!accessToken) {
pm.test("Ожидаемый статус 401", function() {
pm.response.to.have.status(401);
});
} else {
pm.test("Ожидаемый статус 200", function() {
pm.response.to.have.status(200);
});
}
Запустив запрос дважды — один раз без токена, другой раз с ним, вы сможете проверить оба сценария без дублирования самого запроса.
Пример 2: Тестирование процесса создания ресурса
Вы можете также проверить, как API обрабатывает одинаковые запросы на создание ресурса:
- Первый запрос: ожидаем статус 200.
- Второй запрос: ожидаем статус 409.
В этом случае вы можете использовать переменные коллекции для отслеживания статуса создания:
const isObjectCreated = pm.collectionVariables.get("objectCreated");
if (!isObjectCreated) {
// Вызываем запрос для создания объекта
pm.test("Ожидаемый статус 200", function() {
pm.response.to.have.status(200);
});
pm.collectionVariables.set("objectCreated", true);
} else {
pm.test("Ожидаемый статус 409", function() {
pm.response.to.have.status(409);
});
}
Автоматизация данных
Если вы хотите автоматизировать выполнение различных наборов данных, используйте функции Postman Collection Runner и создайте файл JSON для передачи параметров, например:
[
{
"accessToken": "xyz"
},
{
"accessToken": ""
}
]
Таким образом, вы сможете легко управлять различными сценариями тестирования, не теряя в удобстве и гибкости.
Заключение
Postman предоставляет множество возможностей для переиспользования запросов и оптимизации тестирования API. Вместо создания множества копий запросов, вам следует использовать коллекционные переменные и скрипты после выполнения запроса, что позволит избегать дублирования и значительно упростит процесс тестирования.