From 1257ec76fe9d52d4effa2462fc8a3dbfc943f37b Mon Sep 17 00:00:00 2001 From: AselPy Date: Wed, 7 Oct 2026 11:51:01 +0600 Subject: [PATCH] add code --- .gitignore | 1 + main.py | 4 +- tests.py | 120 ++++++++++++++++++++++++++++++++++++++++++++++------- 3 files changed, 108 insertions(+), 17 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..ed8ebf5 --- /dev/null +++ b/.gitignore @@ -0,0 +1 @@ +__pycache__ \ No newline at end of file diff --git a/main.py b/main.py index d3e0a17..2b8bf6b 100644 --- a/main.py +++ b/main.py @@ -1,5 +1,6 @@ -class BooksCollector: + +class BooksCollector: def __init__(self): self.books_genre = {} self.favorites = [] @@ -55,3 +56,4 @@ def delete_book_from_favorites(self, name): # получаем список Избранных книг def get_list_of_favorites_books(self): return self.favorites + diff --git a/tests.py b/tests.py index 383385e..1997c7a 100644 --- a/tests.py +++ b/tests.py @@ -1,24 +1,112 @@ +import pytest from main import BooksCollector -# класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector -# обязательно указывать префикс Test + class TestBooksCollector: - # пример теста: - # обязательно указывать префикс test_ - # дальше идет название метода, который тестируем add_new_book_ - # затем, что тестируем add_two_books - добавление двух книг - def test_add_new_book_add_two_books(self): - # создаем экземпляр (объект) класса BooksCollector + def test_add_new_book(self): + collector = BooksCollector() + n = 'Гарри Поттер' + + collector.add_new_book(n) + + assert n in collector.books_genre + + def test_set_book_genre(self): + collector = BooksCollector() + + collector.add_new_book('Гарри Поттер') + collector.set_book_genre('Гарри Поттер', 'Фантастика') + + assert collector.get_book_genre('Гарри Поттер') == 'Фантастика' + + def test_get_book_genre(self): + collector = BooksCollector() + + collector.add_new_book('Гарри Поттер') + collector.set_book_genre('Гарри Поттер', 'Фантастика') + + assert collector.get_book_genre('Гарри Поттер') == 'Фантастика' + + def test_get_books_with_specific_genre(self): + collector = BooksCollector() + + collector.add_new_book('Гарри Поттер') + collector.add_new_book('Властелин колец') + + collector.set_book_genre('Гарри Поттер', 'Фантастика') + collector.set_book_genre('Властелин колец', 'Фантастика') + + assert collector.get_books_with_specific_genre('Фантастика') == [ + 'Гарри Поттер', + 'Властелин колец' + ] + + def test_get_books_genre(self): + collector = BooksCollector() + + collector.add_new_book('Гарри Поттер') + + assert collector.get_books_genre() == { + 'Гарри Поттер': '' + } + + @pytest.mark.parametrize( + 'book_genre, expected', + [ + ('Фантастика', True), + ('Мультфильмы', True), + ('Комедии', True), + ('Ужасы', False), + ('Детективы', False) + ] + ) + def test_get_books_for_children(self, book_genre, expected): + collector = BooksCollector() + + collector.add_new_book('Книга') + collector.set_book_genre('Книга', book_genre) + + result = 'Книга' in collector.get_books_for_children() + + assert result == expected + + def test_add_book_in_favorites(self): collector = BooksCollector() - # добавляем две книги - collector.add_new_book('Гордость и предубеждение и зомби') - collector.add_new_book('Что делать, если ваш кот хочет вас убить') + collector.add_new_book('Гарри Поттер') + collector.add_book_in_favorites('Гарри Поттер') + + assert collector.get_list_of_favorites_books() == [ + 'Гарри Поттер' + ] + + def test_add_book_in_favorites_twice(self): + collector = BooksCollector() + + collector.add_new_book('Гарри Поттер') + collector.add_book_in_favorites('Гарри Поттер') + collector.add_book_in_favorites('Гарри Поттер') + + assert collector.get_list_of_favorites_books() == [ + 'Гарри Поттер' + ] + + def test_delete_book_from_favorites(self): + collector = BooksCollector() + + collector.add_new_book('Гарри Поттер') + collector.add_book_in_favorites('Гарри Поттер') + collector.delete_book_from_favorites('Гарри Поттер') + + assert collector.get_list_of_favorites_books() == [] + + def test_get_list_of_favorites_books(self): + collector = BooksCollector() - # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + collector.add_new_book('Гарри Поттер') + collector.add_book_in_favorites('Гарри Поттер') - # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + assert collector.get_list_of_favorites_books() == [ + 'Гарри Поттер' + ] \ No newline at end of file