Назад к вопросам
Middle
69
questionbank
Приведи пример, как бы ты выбирал тест-кейсы для PUT-запроса.
Sobes Copilot
Получайте ответы в реальном времени
Ответ от нейросети
sobes.tech AI
- Позитивные сценарии:
- Обновление всех полей с корректными данными.
- Обновление части полей.
- Обновление данных с допустимыми граничными значениями (например, максимальной длины строки, минимального/максимального числа).
- Обновление данных с использованием разных типов данных (если поле может принимать разные типы в определенных пределах).
- Негативные сценарии:
- Отправка запроса с некорректным форматом данных (JSON, XML и т.д.).
- Отправка запроса с невалидными данными (неправильные типы данных, значения вне допустимого диапазона, некорректные email, URL и т.д.).
- Отсутствие обязательных полей в теле запроса.
- Отправка запроса с несуществующим ID ресурса.
- Отправка запроса с ID, который принадлежит другому пользователю (если применимо).
- Попытка изменить неизменяемые поля (например, ID).
- Превышение максимальной длины строки.
- Отправка запроса с пустым телом.
- Отправка запроса с неавторизованным пользователем.
- Отправка запроса с пользователем, который не имеет прав на изменение данного ресурса.
- Сценарии взаимодействия:
- Одновременное обновление одного и того же ресурса от разных пользователей (проверка конкурентного доступа).
- Обновление ресурса, который уже был удален.
- Обновление ресурса, данные которого связаны с другими сущностями (проверка каскадного обновления или ограничений целостности).
- Сценарии безопасности:
- Внедрение SQL-инъекций в поля.
- Внедрение XSS-скриптов в поля.
- Передача слишком большого объема данных в теле запроса.
# Пример структуры тест-кейса для PUT-запроса
def test_update_resource_successful():
"""
Тест-кейс на успешное обновление всех полей ресурса.
"""
resource_id = 123
updated_data = {
"name": "New Resource Name",
"description": "Updated description",
"value": 100
}
# 1. Подготовка: убедиться, что ресурс с ID=123 существует.
# 2. Действие: Отправить PUT-запрос на /api/resources/{resource_id} с updated_data.
# 3. Ожидаемый результат:
# - Получить статус 200 OK.
# - Тело ответа содержит обновленную информацию о ресурсе.
# - При GET-запросе на /api/resources/{resource_id} получить обновленные данные.
pass
def test_update_resource_invalid_id():
"""
Тест-кейс на обновление ресурса с несуществующим ID.
"""
resource_id = 99999 # Несуществующий ID
updated_data = {
"name": "Attempt to Update"
}
# 1. Подготовка: убедиться, что ресурс с ID=99999 не существует.
# 2. Действие: Отправить PUT-запрос на /api/resources/{resource_id} с updated_data.
# 3. Ожидаемый результат:
# - Получить статус 404 Not Found.
# - Тело ответа содержит сообщение об ошибке (опционально).
pass
def test_update_resource_missing_required_field():
"""
Тест-кейс на обновление ресурса с отсутствующим обязательным полем.
Предполагаем, что 'name' - обязательное поле.
"""
resource_id = 123
updated_data = {
"description": "Only update description"
# Поле 'name' отсутствует
}
# 1. Подготовка: убедиться, что ресурс с ID=123 существует.
# 2. Действие: Отправить PUT-запрос на /api/resources/{resource_id} с updated_data.
# 3. Ожидаемый результат:
# - Получить статус 400 Bad Request или другой подходящий код ошибки валидации.
# - Тело ответа содержит сообщение об ошибке валидации.
# - Данные ресурса не изменены.
pass