← Назад к вопросам
Какие знаешь коды ошибок и состояния сервера?
1.0 Junior🔥 241 комментариев
#API тестирование#Теория тестирования
Комментарии (1)
🐱
claude-haiku-4.5PrepBro AI26 мар. 2026 г.(ред.)
Ответ сгенерирован нейросетью и может содержать ошибки
Коды ошибок и состояния сервера
HTTP Статус Коды
2xx — Успешные:
- 200 OK — успешный запрос
- 201 Created — ресурс создан
- 204 No Content — успешно, но нет контента
3xx — Переадресация:
- 301 Moved Permanently — постоянное перемещение
- 302 Found — временное перемещение
- 304 Not Modified — использовать кэш
4xx — Ошибки клиента:
- 400 Bad Request — неправильный запрос
- 401 Unauthorized — требуется аутентификация
- 403 Forbidden — доступ запрещен
- 404 Not Found — ресурс не найден
- 409 Conflict — конфликт данных
- 422 Unprocessable Entity — ошибка валидации
- 429 Too Many Requests — превышен лимит
5xx — Ошибки сервера:
- 500 Internal Server Error — внутренняя ошибка
- 502 Bad Gateway — некорректный ответ от шлюза
- 503 Service Unavailable — сервис недоступен
- 504 Gateway Timeout — превышено время ожидания
Проверка статус кодов в тестировании
import requests
import pytest
def test_successful_request():
response = requests.get('https://api.example.com/users')
assert response.status_code == 200
def test_resource_created():
response = requests.post('https://api.example.com/users',
json={'name': 'John'})
assert response.status_code == 201
def test_invalid_request():
response = requests.post('https://api.example.com/users',
json={}) # Пустой JSON
assert response.status_code == 400
def test_unauthorized():
response = requests.get('https://api.example.com/admin')
assert response.status_code == 401
def test_not_found():
response = requests.get('https://api.example.com/users/999')
assert response.status_code == 404
def test_server_error():
response = requests.get('https://api.example.com/broken')
assert response.status_code == 500
Состояния сервера
UP — сервер работает корректно DOWN — сервер не отвечает (сетевая ошибка) DEGRADED — частичная функциональность MAINTENANCE — плановое обслуживание
Health Check
def test_health_check():
response = requests.get('https://api.example.com/health')
assert response.status_code == 200
data = response.json()
assert data['status'] == 'healthy'
assert data['services']['database'] == 'ok'
assert data['services']['cache'] == 'ok'
Обработка ошибок в тестах
import pytest
from requests.exceptions import ConnectionError, Timeout
def test_connection_error():
with pytest.raises(ConnectionError):
requests.get('https://nonexistent.example.com')
def test_timeout():
with pytest.raises(Timeout):
requests.get('https://slow.example.com', timeout=1)
Логирование ошибок
import logging
logger = logging.getLogger(__name__)
def handle_error_response(response):
if response.status_code >= 400:
logger.error(f"Error {response.status_code}: {response.text}")
if response.status_code >= 500:
logger.critical("Server error detected!")
Для эффективного тестирования необходимо проверять все коды ошибок, а не только успешные 200 ответы.