Набор unit-тестов для проверки работы класса BooksCollector.
main.py — реализация класса BooksCollector
tests.py — unit-тесты
README.md — описание тестов
Служебные директории (pycache) из репозитория исключил.
Python
Pytest
Pytest fixtures
Pytest parametrization
Один тест — один проверяемый метод
Тесты не дублируют друг друга
Общее предусловие вынесено в фикстуру
Параметризация используется для проверки разных входных данных
Тесты сгруппированы по методам класса
test_add_new_book_adds_two_different_books Цель: проверить добавление нескольких разных книг в словарь books_genre. Проверка: после добавления двух книг длина словаря равна 2.
test_add_new_book_does_not_add_duplicate_book Цель: проверить, что одну и ту же книгу нельзя добавить повторно. Проверка: при повторном добавлении длина словаря books_genre не увеличивается.
test_add_new_book_with_empty_name_does_not_add_book Цель: проверить запрет добавления книги с пустым названием. Проверка: книга с пустым названием не добавляется в books_genre.
test_add_new_book_with_too_long_name_does_not_add_book Цель: проверить ограничение на максимальную длину названия книги. Проверка: книга с названием длиннее 40 символов не добавляется.
test_set_book_genre_sets_genre_for_existing_book Цель: проверить установку жанра существующей книге. Проверка: после вызова set_book_genre жанр книги корректно сохраняется в books_genre.
test_get_book_genre_returns_expected_value Цель: проверить получение жанра книги в разных состояниях. Проверка:
- если жанр установлен — возвращается установленное значение;
- если жанр не установлен — возвращается пустая строка.
test_get_books_with_specific_genre_returns_only_books_with_given_genre Цель: проверить получение списка книг с определённым жанром. Проверка: в результат возвращаются только книги с указанным жанром.
test_get_books_for_children_excludes_books_with_age_rating_genres Цель: проверить формирование списка книг, подходящих для детей. Проверка: книги с возрастным рейтингом не попадают в итоговый список.
test_get_books_genre_returns_current_dictionary Цель: проверить, что метод get_books_genre возвращает актуальный словарь. Проверка: возвращаемый словарь соответствует добавленным книгам.
test_add_book_in_favorites_adds_book Цель: проверить добавление книги в избранное. Проверка: книга появляется в списке favorites.
test_add_book_in_favorites_does_not_add_duplicate Цель: проверить, что книгу нельзя добавить в избранное повторно. Проверка: при повторном добавлении длина списка favorites не увеличивается.
test_get_list_of_favorites_books_returns_added_books Цель: проверить получение списка избранных книг при разном количестве данных. Проверка: метод возвращает список всех ранее добавленных в избранное книг.
test_delete_book_from_favorites_removes_book Цель: проверить удаление книги из избранного. Проверка: после удаления книги список favorites пуст.