Ответ
PUT — это идемпотентный HTTP-метод для полного обновления ресурса по указанному URI. Он заменяет все текущие представления ресурса данными из запроса.
Ключевые характеристики для тестирования API:
- Идемпотентность: Многократный вызов одного и того же PUT-запроса должен приводить к одному и тому же состоянию сервера.
- Полная замена: В отличие от PATCH, PUT ожидает полного представления ресурса. Отсутствующие в запросе поля могут быть сброшены в значения по умолчанию или
null. - Создание ресурса: Если ресурс по указанному URI не существует, сервер может создать его (часто возвращая статус
201 Created). Если обновляет существующий — возвращает200 OKили204 No Content.
Пример тест-кейса для PUT-запроса:
// Пример на Java с RestAssured
@Test
public void updateUserProfile() {
String requestBody = """
{
"name": "John Doe",
"email": "john.doe@example.com"
}
""";
given()
.contentType(ContentType.JSON)
.body(requestBody)
.when()
.put("/api/users/123") // Полная замена профиля пользователя с id=123
.then()
.statusCode(200) // Проверяем успешное обновление
.body("name", equalTo("John Doe"));
}
Что важно проверять QA-инженеру:
- Корректность кода ответа при создании и обновлении.
- Идемпотентность метода.
- Валидацию входных данных (обязательные поля, типы данных).
- Поведение при попытке обновления несуществующего ресурса (должен ли он создаваться?).
- Соответствие обновленных данных в ответе и в базе данных.