📝 Задания: вопросы самопроверки

← К оглавлению урока

⚡ Быстрая проверка

  • Как получить 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(), который:
  1. Отправляет GET-запрос к http://5.101.50.27:8000/company/list
  2. Проверяет, что статус-код равен 200
  3. Проверяет, что Content-Type равен "application/json"
  4. Проверяет название первой компании
Задача 2. Напиши тест test_auth(), который выполняет авторизацию с логином harrypotter и паролем expelliarmus и проверяет, что токен в ответе не None.
Задача 3. Напиши тест, который с помощью CompanyApi:
  1. Создаёт компанию
  2. Получает компанию по ID
  3. Проверяет, что название, описание и is_active совпадают с переданными при создании

Посмотреть решения →