Skip to content

MaximVolkovGit/Unit_tests_for_library

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

17 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Юнит-тестирование приложения "BooksCollector"

Описание проекта

Проект представляет собой комплексное юнит-тестирование приложения для управления коллекцией книг. Приложение позволяет создавать коллекции книг, установить им жанр, а также добавлять любимые книги в избранное. Также возможно настроить отображение только детской категории. Реализовано полное тестовое покрытие всех методов класса с проверкой как позитивных, так и негативных сценариев.

Объем выполненной работы

  • 14 тестовых методов, обеспечивающих полное покрытие функциональности:

    • 10 позитивных тестов, проверяющих корректную работу всех методов
    • 4 негативных теста, проверяющих обработку граничных случаев и ошибок
    • 100% покрытие кода класса BooksCollector
  • 3 параметризованных теста для проверки граничных значений:

    • Длина названия книги (1 и 40 символов)
    • Недопустимые длины названий (0 и более 40 символов)
  • 2 категории тестирования:

    • Функциональное тестирование основных операций (добавление, установка жанра)
    • Тестирование бизнес-логики (фильтрация по жанрам, детские книги, избранное)

🛠 Используемые технологии и библиотеки

Основной стек:

  • Pytest - современный фреймворк для написания и запуска тестов
  • pytest-cov - инструмент для измерения покрытия кода тестами
  • Python - язык реализации тестов и тестируемого приложения

Применённые паттерны и подходы

1. AAA Pattern (Arrange-Act-Assert)

  • Разделение тестов на три фазы: подготовка, действие, проверка

2. Параметризация тестов

  • Использование @pytest.mark.parametrize для проверки граничных значений

3. Фикстуры Pytest

  • Фикстура collection для создания чистого экземпляра BooksCollector перед каждым тестом
  • Фикстура test_library для подготовки тестовых данных

4. Тестирование граничных значений

  • Проверка минимальной (1 символ) и максимальной (40 символов) длины названия
  • Проверка недопустимых значений (0 символов, более 40 символов)
  • Тестирование граничных условий для предотвращения ошибок

✅ Покрытие функциональности

Управление книгами:

  • Добавление новых книг с валидными названиями (1-40 символов)
  • Защита от добавления книг с невалидными названиями (0 или >40 символов)
  • Проверка уникальности добавляемых книг

Управление жанрами:

  • Установка жанра для существующей книги
  • Получение жанра книги по её названию
  • Фильтрация книг по конкретному жанру
  • Проверка допустимых жанров из предопределённого списка

Работа с избранным:

  • Добавление книг в избранное (только из существующей коллекции)
  • Удаление книг из избранного
  • Получение списка избранных книг
  • Защита от дублирования в избранном

Бизнес-логика:

  • Фильтрация детских книг (исключение жанров с возрастными ограничениями)
  • Получение полного словаря книг с жанрами
  • Корректная обработка отсутствующих книг при операциях

Файлы:

  • conftest.py - файл с фикстурами
  • main.py - класс BooksCollector
  • test_main.py - тестовый класс TestBooksCollector

Команда для запуска тестов

pytest -v test_main.py

Команда для оценки покрытия

pytest --cov

Результат выполнения тестов: 100%

About

Юнит-тесты для библиотечного сервиса

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published

Languages