Ответ
HTTP-ответ — это структурированное сообщение от сервера, состоящее из трех основных частей: строки статуса, заголовков и тела.
1. Строка статуса (Status Line) Содержит код состояния (Status Code) — трехзначное число, которое является ключевым для тестирования.
- 2xx (Успех):
200 OK,201 Created. - 3xx (Перенаправление):
301 Moved Permanently. - 4xx (Ошибка клиента):
400 Bad Request,401 Unauthorized,404 Not Found. - 5xx (Ошибка сервера):
500 Internal Server Error,502 Bad Gateway.
2. Заголовки (Headers) Метаданные ответа. Важные для тестирования:
Content-Type: Указывает формат тела (application/json,text/html).Content-Length: Размер тела.Set-Cookie: Установка cookies для сессии.Cache-Control: Директивы кэширования.
3. Тело ответа (Body) Фактические данные, обычно в формате JSON, XML, HTML или plain text. Основной объект проверки в тестах.
Полный пример ответа API (JSON):
HTTP/1.1 200 OK <-- Строка статуса
Content-Type: application/json <-- Заголовки
Content-Length: 89
Date: Mon, 01 Jan 2024 12:00:00 GMT
{ <-- Тело ответа (начинается после пустой строки)
"status": "success",
"data": {
"id": 5748,
"title": "Sample Product",
"inStock": true
}
}
Что проверять в тестах API (на примере Python + requests):
import requests
response = requests.get("https://api.example.com/products/5748")
# 1. Проверка кода состояния
assert response.status_code == 200
# 2. Проверка заголовка Content-Type
assert "application/json" in response.headers["Content-Type"]
# 3. Проверка структуры и значений в теле ответа (JSON)
response_json = response.json()
assert response_json["status"] == "success"
assert "id" in response_json["data"]
assert response_json["data"]["inStock"] is True
# 4. Проверка на ошибки (например, для несуществующего ресурса)
error_response = requests.get("https://api.example.com/products/99999")
assert error_response.status_code == 404