Назад к вопросам
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