Skip to content

ergon73/python-api-mocking-thecatapi

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

2 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Python API Mocking with TheCatAPI

Небольшой учебный проект по Python, который показывает, как тестировать работу с внешним API с помощью мокирования.

Автор: Георгий Белянин (Georgy Belyanin) — georgy.belyanin@gmail.com

Проект решает простую задачу:

  • делает запрос к TheCatAPI;
  • получает URL случайного изображения кошки;
  • проверяет успешный и неуспешный сценарии через pytest и pytest-mock.

Что здесь отрабатывается

  • работа с HTTP API через requests;
  • извлечение данных из JSON-ответа;
  • изоляция тестов от сети;
  • мокирование requests.get;
  • проверка обработки успешного ответа и ошибки API.

Стек

  • Python
  • requests
  • pytest
  • pytest-mock

Структура проекта

.
├── .gitignore
├── README.md
├── main.py
├── pytest.ini
├── requirements.txt
└── test.py

Поведение функции

Функция get_random_cat_image_url() обращается к:

https://api.thecatapi.com/v1/images/search

Ожидаемое поведение:

  • если API возвращает статус-код 200, функция достает url из первого элемента JSON-списка и возвращает строку;
  • если API возвращает неуспешный статус-код, функция возвращает None.

Установка зависимостей

Для Windows 11:

py -3 -m venv .venv
.\.venv\Scripts\python.exe -m pip install --upgrade pip
.\.venv\Scripts\python.exe -m pip install -r requirements.txt

Запуск тестов

.\.venv\Scripts\python.exe -m pytest

Подробный вывод (какие тесты выполнены) включён по умолчанию. Для краткого вывода используйте -q.

Что проверяют тесты

  1. Успешный ответ API:

    • status_code == 200;
    • функция возвращает корректный URL изображения.
  2. Неуспешный ответ API:

    • например, status_code == 404;
    • функция возвращает None.

Почему здесь используется мокирование

Тесты не должны зависеть от интернета, доступности TheCatAPI и случайных данных. Поэтому в тестах подменяется requests.get, а ответы API задаются вручную через мок-объект. Это делает тесты быстрыми, предсказуемыми и воспроизводимыми.

Практический результат

Этот репозиторий показывает базовый, но важный навык: как безопасно тестировать интеграцию с внешним API, не выполняя реальные HTTP-запросы во время тестов.

About

Small Python project that demonstrates API mocking and testing with requests, pytest, pytest-mock, and TheCatAPI.

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

 
 
 

Contributors

Languages