Урок 13. Введение в Requests
⚡ Кратко: библиотека requests — HTTP из Python
requests — популярная библиотека Python для отправки HTTP-запросов. Позволяет делать GET/POST/PUT/DELETE/PATCH, передавать заголовки, параметры, JSON-тело и обрабатывать ответ сервера.
- Установка:
pip install requests - GET:
resp = requests.get(url, params={...}, headers={...}) - POST:
resp = requests.post(url, json={...}) - Ответ:
resp.status_code/resp.json()/resp.text/resp.headers - Сессия:
with requests.Session() as s: s.get(url)— переиспользует соединение и куки - Класс-клиент: вынести все запросы в
CompanyApi— тесты становятся чище
Топ-3 ошибки: 1) Не проверить status_code — тест молча проходит с ошибкой 422/500. 2) Перепутать data= и json= — Content-Type будет неверным. 3) Вызвать .json() когда сервер вернул HTML — JSONDecodeError.
📖 О чём этот урок
Этот урок открывает блок API-тестирования. Вы узнаете, что такое клиент-серверная архитектура, HTTP-методы и статус-коды, как работает библиотека requests, научитесь делать GET и POST запросы, разбирать ответ сервера и писать базовые pytest-тесты для REST API. В конце урока создадим класс CompanyApi — прообраз архитектуры API-клиента.
Что изучим
- Клиент-серверная архитектура, HTTP и HTTPS
- Состав HTTP-запроса: URL, метод, заголовки, тело
- HTTP-методы: GET, POST, PUT, PATCH, DELETE и другие
- Статус-коды: 2xx, 3xx, 4xx, 5xx
- REST API — набор соглашений для организации запросов
- Библиотека requests: установка и основные методы
- Объект Response:
status_code,.json(),.text,.headers,.ok - Работа с JSON в Python:
json.loads(), словари и списки - Сервис X-Clients: модули auth, company, employee, superuser
- Написание pytest-тестов для API: GET-список, POST-создание, негативные тесты
- Паттерн API-клиента: класс
CompanyApi
📚 Что повторить перед изучением
- ← Урок 12: Summary session 6 — Page Object Model, структура тест-проекта
- Словари в Python: создание, доступ, перебор, вложенные структуры
- Классы в Python:
__init__, методы,self - pytest: запуск тестов,
assert, параметризация - Виртуальное окружение:
python -m venv venv,pip install
🎯 Что изучать дальше
- → Урок 14: Summary session 7 — повторение основ Requests
- Pytest-фикстуры для API: базовый URL, токен авторизации
- Параметризация API-тестов:
@pytest.mark.parametrize - Библиотека
pytest-httprettyилиresponses— моки HTTP-запросов