Это приложение представляет собой простую библиотечную систему для добавления, удаления и поиска книг, а также обновления статуса книги (например, "в наличии" или "выдана"). Приложение использует Python и Docker для контейнеризации, а также юнит-тесты для проверки функционала.
test_task_library/
├── Dockerfile # Docker образ для приложения
├── book.py # Класс Book и перечисление BookStatus
├── library.py # Класс Library
├── main.py # Основное приложение
├── storage.json # Файл для хранения данных
└── tests/
----├── __init__.py # Делает папку tests
модулем
----├── test_book.py # Тесты для класса Book
----└── test_library.py # Тесты для класса Library
-
book.py: Содержит класс
Book
с аттрибутами, такими как ID, название, автор, год издания и статус. Также включает перечислениеBookStatus
для отображения статусов книги. -
library.py: Содержит класс
Library
, который управляет книгами, включая методы для добавления, удаления, поиска, вывода списка книг и изменения статуса. -
main.py: Главный исполняемый файл программы, который реализует интерфейс командной строки для взаимодействия с пользователем.
-
storage.json: Файл, в котором сохраняется информация о книгах в формате JSON. Он монтируется в контейнер для хранения данных.
-
requirements.txt: Содержит список всех зависимостей, необходимых для работы приложения, включая библиотеки для тестирования и работы с Python.
-
tests: Тесты для проверки функциональности приложения, такие как добавление, удаление книг, поиск и изменение статусов.
-
Убедитесь, что у вас установлен Docker: Прежде чем продолжить, убедитесь, что Docker установлен и запущен на вашей машине. Для этого можно проверить с помощью команды:
docker --version
-
Соберите Docker образ: Перейдите в директорию проекта, где находится файл Dockerfile, и выполните следующую команду для сборки Docker образа:
docker build -t library_app
Эта команда создаст Docker образ с именем library_app.
-
Проверьте собранный образ: После успешной сборки можно проверить, что образ создан, с помощью команды:
docker images
Чтобы запустить приложение в Docker контейнере, выполните следующую команду:
docker run -it --rm -v path_to_work_directory/test_task_library/storage.json:/app/storage.json library_app
Этот командный запуск монтирует файл storage.json из вашего проекта на хосте в контейнер. Когда приложение запускается, оно будет использовать этот файл для чтения и записи данных о книгах.
После запуска контейнера в командной строке будет отображаться меню, через которое можно выполнять различные действия с книгами:
- Добавить книгу
- Удалить книгу
- Найти книгу
- Показать все книги
- Изменить статус книги
- Выход Введите соответствующий номер действия и следуйте инструкциям.
Для запуска тестов, которые находятся в папке tests/, выполните команду:
docker run --rm -v path_to_work_directory/test_task_library:/app library_app pytest
Эта команда запустит тесты внутри контейнера с использованием pytest. Все тесты должны пройти успешно, если функциональность библиотеки работает корректно.
В файле requirements.txt содержатся все необходимые библиотеки для запуска проекта и тестов. Для установки зависимостей используйте следующую команду:
pip install -r requirements.txt
Если вы запускаете проект внутри контейнера, Docker автоматически установит все зависимости при сборке образа.