From ffe6007d35f80b7a750b21279bfb61286b3d2c3e Mon Sep 17 00:00:00 2001 From: anastasia kostromina Date: Wed, 15 Apr 2026 17:03:22 +0300 Subject: [PATCH 1/4] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D0=BE=D0=B5?= =?UTF-8?q?=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD=D0=B8=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- main.py | 3 +++ 1 file changed, 3 insertions(+) diff --git a/main.py b/main.py index d3e0a17..0745985 100644 --- a/main.py +++ b/main.py @@ -6,6 +6,9 @@ def __init__(self): self.genre = ['Фантастика', 'Ужасы', 'Детективы', 'Мультфильмы', 'Комедии'] self.genre_age_rating = ['Ужасы', 'Детективы'] + def get_books_rating(self): + return self.books_genre + # добавляем новую книгу def add_new_book(self, name): if not self.books_genre.get(name) and 0 < len(name) < 41: From c1c744f54fe6582d46ee8bc99c35b79c66434dbb Mon Sep 17 00:00:00 2001 From: anastasia kostromina Date: Wed, 15 Apr 2026 17:11:42 +0300 Subject: [PATCH 2/4] =?UTF-8?q?=D0=B3=D0=BE=D1=82=D0=BE=D0=B2=D1=8B=20?= =?UTF-8?q?=D0=BF=D1=80=D0=BE=D0=B5=D0=BA=D1=82?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests.py | 213 +++++++++++++++++++++++++++++++++++++++++-------------- 1 file changed, 159 insertions(+), 54 deletions(-) diff --git a/tests.py b/tests.py index 5484ccc..4ed1932 100644 --- a/tests.py +++ b/tests.py @@ -1,89 +1,194 @@ +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 + collector = BooksCollector() + + # добавляем две книги + collector.add_new_book('Гордость и предубеждение и зомби') + collector.add_new_book('Что делать, если ваш кот хочет вас убить') + + # проверяем, что добавилось именно две + # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 + assert len(collector.get_books_rating()) == 2 + + # напиши свои тесты ниже + # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() import pytest from main import BooksCollector class TestBooksCollector: - def test_initial_state(self): + def test_add_new_book(self): collector = BooksCollector() - assert collector.get_books_genre() == {} and collector.get_list_of_favorites_books() == [] + collector.add_new_book('1984') - def test_add_new_book_correct_add_book_successful_add(self): + assert '1984' in collector.get_books_genre() + + def test_add_same_book_twice(self): collector = BooksCollector() - collector.add_new_book('Азбука') - assert collector.get_book_genre('Азбука') == '' + collector.add_new_book('1984') + collector.add_new_book('1984') + + assert len(collector.get_books_genre()) == 1 - @pytest.mark.parametrize("name, expected_count", [ - ('Азбука', 1), - ('', 0), - ('Азбука' * 10, 0) + @pytest.mark.parametrize('name', [ + '', + 'a' * 41 ]) - def test_add_new_book_incorrect_add_book_unsuccessful_add(self, name, expected_count): + def test_add_book_invalid_name(self, name): collector = BooksCollector() collector.add_new_book(name) - assert len(collector.get_books_genre()) == expected_count - def test_set_book_genre_correct_genre_success(self): - collector = BooksCollector() - collector.add_new_book('Азбука') - collector.set_book_genre('Азбука', 'Ужасы') - assert collector.books_genre['Азбука'] == 'Ужасы' + assert len(collector.get_books_genre()) == 0 - def test_set_book_genre_incorrect_genre_unsuccess(self): + def test_set_book_genre(self): collector = BooksCollector() - collector.add_new_book('Азбука') - collector.set_book_genre('Азбука', 'FFFFFF') - assert collector.books_genre['Азбука'] == '' + collector.add_new_book('1984') + collector.set_book_genre('1984', 'Фантастика') + + assert collector.get_book_genre('1984') == 'Фантастика' - def test_get_book_genre(self): + def test_set_invalid_genre(self): collector = BooksCollector() - collector.add_new_book('Азбука') - collector.set_book_genre('Азбука', 'Ужасы') - assert collector.get_book_genre('Азбука') == 'Ужасы' + collector.add_new_book('1984') + collector.set_book_genre('1984', 'Роман') + + assert collector.get_book_genre('1984') == '' def test_get_books_with_specific_genre(self): collector = BooksCollector() - books = ['Азбука', 'Алгебра', 'Маленький принц'] - for book in books: - collector.add_new_book(book) - collector.set_book_genre(book, 'Ужасы') - - collector.add_new_book('Ну погоди') - collector.set_book_genre('Ну погоди', 'Мультфильмы') + collector.add_new_book('1984') + collector.set_book_genre('1984', 'Фантастика') - assert collector.get_books_with_specific_genre('Ужасы') == books + result = collector.get_books_with_specific_genre('Фантастика') - def test_get_books_genre(self): - collector = BooksCollector() - collector.add_new_book('Азбука') - assert collector.get_books_genre() == {'Азбука': ''} + assert '1984' in result def test_get_books_for_children(self): collector = BooksCollector() - collector.add_new_book('Детская') - collector.add_new_book('Взрослая') - collector.set_book_genre('Детская', 'Фантастика') - collector.set_book_genre('Взрослая', 'Ужасы') + collector.add_new_book('1984') + collector.set_book_genre('1984', 'Фантастика') + + collector.add_new_book('Оно') + collector.set_book_genre('Оно', 'Ужасы') + + result = collector.get_books_for_children() - assert collector.get_books_for_children() == ['Детская'] + assert '1984' in result + assert 'Оно' not in result def test_add_book_in_favorites(self): collector = BooksCollector() - collector.add_new_book('Азбука') - collector.add_book_in_favorites('Азбука') - assert collector.get_list_of_favorites_books() == ['Азбука'] + collector.add_new_book('1984') + collector.add_book_in_favorites('1984') + + assert '1984' in collector.get_list_of_favorites_books() + + def test_add_nonexistent_book_to_favorites(self): + collector = BooksCollector() + collector.add_book_in_favorites('1984') + + assert len(collector.get_list_of_favorites_books()) == 0 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() == [] + collector.add_new_book('1984') + collector.add_book_in_favorites('1984') + collector.delete_book_from_favorites('1984') + + assert '1984' not in collector.get_list_of_favorites_books() +import pytest +from main import BooksCollector + + +class TestBooksCollector: + + def test_add_new_book(self): + collector = BooksCollector() + collector.add_new_book('1984') - def test_get_list_of_favorites_books(self): + assert '1984' in collector.get_books_genre() + + def test_add_same_book_twice(self): collector = BooksCollector() - collector.add_new_book('Азбука') - collector.add_new_book('Алгебра') - collector.add_book_in_favorites('Азбука') - collector.add_book_in_favorites('Алгебра') - assert collector.get_list_of_favorites_books() == ['Азбука', 'Алгебра'] \ No newline at end of file + collector.add_new_book('1984') + collector.add_new_book('1984') + + assert len(collector.get_books_genre()) == 1 + + @pytest.mark.parametrize('name', [ + '', + 'a' * 41 + ]) + def test_add_book_invalid_name(self, name): + collector = BooksCollector() + collector.add_new_book(name) + + assert len(collector.get_books_genre()) == 0 + + def test_set_book_genre(self): + collector = BooksCollector() + collector.add_new_book('1984') + collector.set_book_genre('1984', 'Фантастика') + + assert collector.get_book_genre('1984') == 'Фантастика' + + def test_set_invalid_genre(self): + collector = BooksCollector() + collector.add_new_book('1984') + collector.set_book_genre('1984', 'Роман') + + assert collector.get_book_genre('1984') == '' + + def test_get_books_with_specific_genre(self): + collector = BooksCollector() + collector.add_new_book('1984') + collector.set_book_genre('1984', 'Фантастика') + + result = collector.get_books_with_specific_genre('Фантастика') + + assert '1984' in result + + def test_get_books_for_children(self): + collector = BooksCollector() + collector.add_new_book('1984') + collector.set_book_genre('1984', 'Фантастика') + + collector.add_new_book('Оно') + collector.set_book_genre('Оно', 'Ужасы') + + result = collector.get_books_for_children() + + assert '1984' in result + assert 'Оно' not in result + + def test_add_book_in_favorites(self): + collector = BooksCollector() + collector.add_new_book('1984') + collector.add_book_in_favorites('1984') + + assert '1984' in collector.get_list_of_favorites_books() + + def test_add_nonexistent_book_to_favorites(self): + collector = BooksCollector() + collector.add_book_in_favorites('1984') + + assert len(collector.get_list_of_favorites_books()) == 0 + + def test_delete_book_from_favorites(self): + collector = BooksCollector() + collector.add_new_book('1984') + collector.add_book_in_favorites('1984') + collector.delete_book_from_favorites('1984') + + assert '1984' not in collector.get_list_of_favorites_books() From 17ba4cfeb379946062b3c14e27fdf980bd582647 Mon Sep 17 00:00:00 2001 From: llorichT Date: Wed, 15 Apr 2026 17:27:46 +0300 Subject: [PATCH 3/4] Remove redundant test cases from tests.py --- tests.py | 85 -------------------------------------------------------- 1 file changed, 85 deletions(-) diff --git a/tests.py b/tests.py index 4ed1932..74aedf1 100644 --- a/tests.py +++ b/tests.py @@ -26,91 +26,6 @@ def test_add_new_book_add_two_books(self): from main import BooksCollector -class TestBooksCollector: - - def test_add_new_book(self): - collector = BooksCollector() - collector.add_new_book('1984') - - assert '1984' in collector.get_books_genre() - - def test_add_same_book_twice(self): - collector = BooksCollector() - collector.add_new_book('1984') - collector.add_new_book('1984') - - assert len(collector.get_books_genre()) == 1 - - @pytest.mark.parametrize('name', [ - '', - 'a' * 41 - ]) - def test_add_book_invalid_name(self, name): - collector = BooksCollector() - collector.add_new_book(name) - - assert len(collector.get_books_genre()) == 0 - - def test_set_book_genre(self): - collector = BooksCollector() - collector.add_new_book('1984') - collector.set_book_genre('1984', 'Фантастика') - - assert collector.get_book_genre('1984') == 'Фантастика' - - def test_set_invalid_genre(self): - collector = BooksCollector() - collector.add_new_book('1984') - collector.set_book_genre('1984', 'Роман') - - assert collector.get_book_genre('1984') == '' - - def test_get_books_with_specific_genre(self): - collector = BooksCollector() - collector.add_new_book('1984') - collector.set_book_genre('1984', 'Фантастика') - - result = collector.get_books_with_specific_genre('Фантастика') - - assert '1984' in result - - def test_get_books_for_children(self): - collector = BooksCollector() - collector.add_new_book('1984') - collector.set_book_genre('1984', 'Фантастика') - - collector.add_new_book('Оно') - collector.set_book_genre('Оно', 'Ужасы') - - result = collector.get_books_for_children() - - assert '1984' in result - assert 'Оно' not in result - - def test_add_book_in_favorites(self): - collector = BooksCollector() - collector.add_new_book('1984') - collector.add_book_in_favorites('1984') - - assert '1984' in collector.get_list_of_favorites_books() - - def test_add_nonexistent_book_to_favorites(self): - collector = BooksCollector() - collector.add_book_in_favorites('1984') - - assert len(collector.get_list_of_favorites_books()) == 0 - - def test_delete_book_from_favorites(self): - collector = BooksCollector() - collector.add_new_book('1984') - collector.add_book_in_favorites('1984') - collector.delete_book_from_favorites('1984') - - assert '1984' not in collector.get_list_of_favorites_books() -import pytest -from main import BooksCollector - - class TestBooksCollector: def test_add_new_book(self): From b080944af3ca7073fc9e580b4bee6d96fb6eceec Mon Sep 17 00:00:00 2001 From: llorichT Date: Thu, 16 Apr 2026 13:34:07 +0300 Subject: [PATCH 4/4] =?UTF-8?q?=D0=B8=D1=81=D0=BF=D1=80=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B7=D0=B0=D0=BC=D0=B5=D1=87=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B9?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests.py | 38 ++++++++++++++------------------------ 1 file changed, 14 insertions(+), 24 deletions(-) diff --git a/tests.py b/tests.py index 74aedf1..03b35e8 100644 --- a/tests.py +++ b/tests.py @@ -1,27 +1,3 @@ -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 - collector = BooksCollector() - - # добавляем две книги - collector.add_new_book('Гордость и предубеждение и зомби') - collector.add_new_book('Что делать, если ваш кот хочет вас убить') - - # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 - - # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() import pytest from main import BooksCollector @@ -107,3 +83,17 @@ def test_delete_book_from_favorites(self): collector.delete_book_from_favorites('1984') assert '1984' not in collector.get_list_of_favorites_books() + + def test_get_books_genre(self): + collector = BooksCollector() + collector.add_new_book('1984') + + assert collector.get_books_genre() == {'1984': ''} + + + def test_get_book_genre(self): + collector = BooksCollector() + collector.add_new_book('1984') + collector.set_book_genre('1984', 'Фантастика') + + assert collector.get_book_genre('1984') == 'Фантастика'