📝 Задания: вопросы самопроверки
⚡ Быстрая проверка
- Как получить JSON из ответа? —
resp.json() - Какой статус у успешного создания? — 201 Created
- Чем resp.text отличается от resp.json()? — text строка, json() — dict/list
- Зачем класс CompanyApi? — инкапсуляция, переиспользование, чистые тесты
Это вопросы в формате экспресс-опроса из лекции (Summary session 7). Попробуй ответить самостоятельно, затем сверься с решениями.
Блок 1: Основы HTTP и requests
Вопрос 1. Что такое клиент-серверная архитектура? Приведи примеры клиента и сервера из реальной жизни.
Вопрос 2. В чём разница между HTTP и HTTPS? Когда важно использовать именно HTTPS?
Вопрос 3. Перечисли основные HTTP-методы. Что делает каждый? Приведи пример для каждого на XClients API.
Вопрос 4. Из чего состоит HTTP-запрос? Из каких частей состоит HTTP-ответ?
Блок 2: Библиотека requests
Вопрос 5. Как установить библиотеку requests? Как проверить, что она установлена?
Вопрос 6. Какие атрибуты есть у объекта Response? Что хранит каждый?
Вопрос 7. В чём разница между
resp.text и resp.json()? Когда нужен каждый? Что произойдёт, если вызвать resp.json() на ответе, который не является JSON?
Вопрос 8. Как передать JSON-данные в POST-запросе через requests? Какой параметр использовать —
json= или data=, и почему?
Блок 3: Работа с JSON
Вопрос 9. Как преобразовать JSON-строку в Python-объект? Что вернёт
json.loads() для JSON-объекта и для JSON-массива?
Вопрос 10. Перечисли частые ошибки в JSON. Как отловить
JSONDecodeError?
Вопрос 11. Какие основные отличия между JSON и Python? (подсказка:
true/True, null/None)
Блок 4: Класс CompanyApi
Вопрос 12. Зачем выносить работу с API в отдельный класс? Какие преимущества даёт
CompanyApi по сравнению с прямыми вызовами requests в тестах?
Вопрос 13. Перечисли методы класса
CompanyApi из лекции. Опиши, что делает каждый метод.
Вопрос 14. Почему при тестировании нельзя использовать фиксированный ID компании? Как правильно организовать тест, использующий ID?
Блок 5: Практические задачи (код)
Задача 1. Напиши тест
test_simple_req(), который:
- Отправляет GET-запрос к
http://5.101.50.27:8000/company/list - Проверяет, что статус-код равен 200
- Проверяет, что
Content-Typeравен"application/json" - Проверяет название первой компании
Задача 2. Напиши тест
test_auth(), который выполняет авторизацию с логином harrypotter и паролем expelliarmus и проверяет, что токен в ответе не None.
Задача 3. Напиши тест, который с помощью
CompanyApi:
- Создаёт компанию
- Получает компанию по ID
- Проверяет, что название, описание и
is_activeсовпадают с переданными при создании