Ответ
В API-тестировании проверяю статус-коды из всех основных классов:
| Класс | Код | Значение | Когда проверять |
|---|---|---|---|
| 2xx (Успех) | 200 OK |
Стандартный ответ для успешных запросов. | GET, PUT, PATCH. |
201 Created |
Запрос выполнен, новый ресурс создан. | POST при успешном создании. | |
204 No Content |
Сервер успешно обработал запрос, но не возвращает контент. | DELETE, иногда POST/PUT. | |
| 3xx (Перенаправление) | 301 Moved Permanently |
Ресурс навсегда перемещен по новому URI. | Проверка корректности редиректа. |
| 4xx (Ошибка клиента) | 400 Bad Request |
Сервер не может обработать запрос из-за синтаксической ошибки. | Невалидные входные данные. |
401 Unauthorized |
Требуется аутентификация. | Запрос без токена/с неверными кредами. | |
403 Forbidden |
Сервер понял запрос, но отказывается его авторизовать. | Недостаточно прав. | |
404 Not Found |
Сервер не может найти запрашиваемый ресурс. | Несуществующий URL или ID. | |
| 5xx (Ошибка сервера) | 500 Internal Server Error |
Общая ошибка сервера. | Сбой в серверной логике. |
502 Bad Gateway |
Сервер, действуя как шлюз, получил недопустимый ответ. | Проблемы с upstream-сервисами. |
Пример проверки в тесте:
import requests
# Проверка успешного создания
response = requests.post("https://api.example.com/users", json=user_data)
assert response.status_code == 201, f"Expected 201, got {response.status_code}"
# Проверка обработки ошибки клиента
response = requests.get("https://api.example.com/users/99999")
assert response.status_code == 404, f"Expected 404 for non-existent user"