Проект представляет собой комплексное юнит-тестирование приложения для управления коллекцией книг. Приложение позволяет создавать коллекции книг, установить им жанр, а также добавлять любимые книги в избранное. Также возможно настроить отображение только детской категории. Реализовано полное тестовое покрытие всех методов класса с проверкой как позитивных, так и негативных сценариев.
-
14 тестовых методов, обеспечивающих полное покрытие функциональности:
- 10 позитивных тестов, проверяющих корректную работу всех методов
- 4 негативных теста, проверяющих обработку граничных случаев и ошибок
- 100% покрытие кода класса
BooksCollector
-
3 параметризованных теста для проверки граничных значений:
- Длина названия книги (1 и 40 символов)
- Недопустимые длины названий (0 и более 40 символов)
-
2 категории тестирования:
- Функциональное тестирование основных операций (добавление, установка жанра)
- Тестирование бизнес-логики (фильтрация по жанрам, детские книги, избранное)
- Pytest - современный фреймворк для написания и запуска тестов
- pytest-cov - инструмент для измерения покрытия кода тестами
- Python - язык реализации тестов и тестируемого приложения
- Разделение тестов на три фазы: подготовка, действие, проверка
- Использование
@pytest.mark.parametrizeдля проверки граничных значений
- Фикстура
collectionдля создания чистого экземпляраBooksCollectorперед каждым тестом - Фикстура
test_libraryдля подготовки тестовых данных
- Проверка минимальной (1 символ) и максимальной (40 символов) длины названия
- Проверка недопустимых значений (0 символов, более 40 символов)
- Тестирование граничных условий для предотвращения ошибок
- Добавление новых книг с валидными названиями (1-40 символов)
- Защита от добавления книг с невалидными названиями (0 или >40 символов)
- Проверка уникальности добавляемых книг
- Установка жанра для существующей книги
- Получение жанра книги по её названию
- Фильтрация книг по конкретному жанру
- Проверка допустимых жанров из предопределённого списка
- Добавление книг в избранное (только из существующей коллекции)
- Удаление книг из избранного
- Получение списка избранных книг
- Защита от дублирования в избранном
- Фильтрация детских книг (исключение жанров с возрастными ограничениями)
- Получение полного словаря книг с жанрами
- Корректная обработка отсутствующих книг при операциях
- conftest.py - файл с фикстурами
- main.py - класс BooksCollector
- test_main.py - тестовый класс TestBooksCollector
pytest -v test_main.py
pytest --cov