From 42caf7ad8b5758b4bd479e6649dceb6742f7f82a Mon Sep 17 00:00:00 2001 From: Ivan Nosovets Date: Sun, 1 Feb 2026 11:31:48 +0300 Subject: [PATCH 1/2] =?UTF-8?q?4=20=D0=A1=D0=9F=D0=A0=D0=98=D0=9D=D0=A2!!?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests.py | 266 ++++++++++++------------------------------------------- 1 file changed, 58 insertions(+), 208 deletions(-) diff --git a/tests.py b/tests.py index dc86ab8..0599611 100644 --- a/tests.py +++ b/tests.py @@ -1,226 +1,76 @@ import pytest +from main import BooksCollector class TestBooksCollector: - - # Тест 1: Проверка инициализации коллектора - def test_init_books_collector(self): - collector = BooksCollector() - assert collector.books_genre == {} - assert collector.favorites == [] - assert collector.genre == ['Фантастика', 'Ужасы', 'Детективы', 'Мультфильмы', 'Комедии'] - assert collector.genre_age_rating == ['Ужасы', 'Детективы'] - - # Тест 2: Параметризованный тест для добавления новой книги - @pytest.mark.parametrize('book_name, expected', [ - ('Война и мир', True), # валидное название - ('A' * 40, True), # граничное значение (40 символов) - ('Книга', True), # обычное название - ('', False), # пустая строка - ('A' * 41, False), # слишком длинное название (41 символ) - ]) - def test_add_new_book(self, book_name, expected): - collector = BooksCollector() - collector.add_new_book(book_name) - - if expected: - assert book_name in collector.books_genre - assert collector.books_genre[book_name] == '' - else: - assert book_name not in collector.books_genre - - # Тест 3: Нельзя добавить одну книгу дважды - def test_add_new_book_twice(self): - collector = BooksCollector() - book_name = 'Мастер и Маргарита' - - collector.add_new_book(book_name) - collector.add_new_book(book_name) # повторная попытка - - assert len(collector.books_genre) == 1 - assert list(collector.books_genre.keys()) == [book_name] - - # Тест 4: Установка жанра для книги - def test_set_book_genre_valid(self): - collector = BooksCollector() - collector.add_new_book('1984') - collector.set_book_genre('1984', 'Фантастика') - - assert collector.get_book_genre('1984') == 'Фантастика' - - # Тест 5: Нельзя установить несуществующий жанр - def test_set_book_genre_invalid_genre(self): +#Исправленные тесты +#добавление двух книг + def test_add_new_book_add_two_books(self): collector = BooksCollector() - collector.add_new_book('Книга') - collector.set_book_genre('Книга', 'Несуществующий жанр') + collector.add_new_book('Гордость и предубеждение и зомби') + collector.add_new_book('Что делать, если ваш кот хочет вас убить') + assert len(collector.get_books_genre()) == 2 - assert collector.get_book_genre('Книга') == '' - - # Тест 6: Получение жанра книги - def test_get_book_genre(self): +#Неправильное название + @pytest.mark.parametrize('name', ['', 'a'*41]) + def test_add_new_book_invalid_name_lenght(self, name): collector = BooksCollector() - collector.add_new_book('Преступление и наказание') - collector.set_book_genre('Преступление и наказание', 'Детективы') - - assert collector.get_book_genre('Преступление и наказание') == 'Детективы' - assert collector.get_book_genre('Несуществующая книга') is None - - # Тест 7: Получение книг с определенным жанром - def test_get_books_with_specific_genre(self): + collector.add_new_book(name) + assert name not in collector.books_genre +#жанр к названию кинги + def test_set_book_genre_add_one_genre(self): collector = BooksCollector() - - # Добавляем книги разных жанров - books = [ - ('Солярис', 'Фантастика'), - ('Оно', 'Ужасы'), - ('Шерлок Холмс', 'Детективы'), - ('Зеленая миля', 'Фантастика') - ] - - for name, genre in books: - collector.add_new_book(name) - collector.set_book_genre(name, genre) - - fantasy_books = collector.get_books_with_specific_genre('Фантастика') - assert len(fantasy_books) == 2 - assert 'Солярис' in fantasy_books - assert 'Зеленая миля' in fantasy_books - - # Тест 8: Получение всех книг - def test_get_books_genre(self): + collector.add_new_book('Голова профессора Доуэля') + collector.set_book_genre('Голова профессора Доуэля', 'Фантастика') + assert collector.books_genre['Голова профессора Доуэля'] == 'Фантастика' +#возврат жанра по книги + def test_get_book_genre_positive(self): collector = BooksCollector() - collector.add_new_book('Книга 1') - collector.add_new_book('Книга 2') - - books = collector.get_books_genre() - assert isinstance(books, dict) - assert len(books) == 2 - - # Тест 9: Получение книг для детей - def test_get_books_for_children(self): - collector = BooksCollector() - - # Книги с разными жанрами - children_books = [ - ('Гарри Поттер', 'Фантастика'), - ('Ну погоди!', 'Мультфильмы'), - ('Маска', 'Комедии') - ] - - adult_books = [ - ('Сияние', 'Ужасы'), - ('Десять негритят', 'Детективы') - ] - - # Добавляем все книги - for name, genre in children_books + adult_books: - collector.add_new_book(name) - collector.set_book_genre(name, genre) - - children_only = collector.get_books_for_children() - - # Проверяем, что только детские книги - assert len(children_only) == 3 - for name, _ in children_books: - assert name in children_only - - for name, _ in adult_books: - assert name not in children_only - - # Тест 10: Параметризованный тест для добавления в избранное - @pytest.mark.parametrize('book_in_dict, expected_in_favorites', [ - (True, True), # книга в словаре → добавляется в избранное - (False, False), # книги нет в словаре → не добавляется - ]) - def test_add_book_in_favorites(self, book_in_dict, expected_in_favorites): + collector.add_new_book('Оно') + collector.books_genre['Оно'] = 'Ужасы' + assert collector.get_book_genre('Оно') == 'Ужасы' + #вывод списка по жанру + def test_get_books_with_specific_genre_positive(self): collector = BooksCollector() - book_name = 'Избранная книга' - - if book_in_dict: - collector.add_new_book(book_name) - - collector.add_book_in_favorites(book_name) - - if expected_in_favorites: - assert book_name in collector.favorites - else: - assert book_name not in collector.favorites - - # Тест 11: Нельзя добавить книгу в избранное дважды - def test_add_book_in_favorites_twice(self): + collector.books_genre.update({'Убийство на улице Морг': 'Детективы', 'Рассказы о Шерлоке Холмсе': 'Детективы'}) + result = collector.get_books_with_specific_genre('Детективы') + assert result == ['Убийство на улице Морг', 'Рассказы о Шерлоке Холмсе'] +#вывод словаряя + def test_get_books_genre_positive(self): collector = BooksCollector() - book_name = 'Двойное избранное' - - collector.add_new_book(book_name) - collector.add_book_in_favorites(book_name) - collector.add_book_in_favorites(book_name) # повторная попытка - - assert len(collector.favorites) == 1 - assert collector.favorites == [book_name] - - # Тест 12: Удаление книги из избранного - def test_delete_book_from_favorites(self): + collector.books_genre = {'Оно': 'Ужасы'} + assert collector.get_books_genre() == {'Оно': 'Ужасы'} +# + def test_get_books_for_children_positive(self): + collector = BooksCollector( + collector.books_genre = {'Голова профессора Доуэля': 'Фантастика'} + result = collector.get_books_for_children() + assert 'Голова профессора Доуэля' in result + +#недобавление книги жанра для детей + def test_get_books_for_children_negative(self) collector = BooksCollector() - book_name = 'Удаляемая книга' - - collector.add_new_book(book_name) - collector.add_book_in_favorites(book_name) + collector.books_genre = {'Оно': 'Ужасы'} + result = collector.get_books_for_children() + assert 'Оно' not in result - # Проверяем, что книга добавилась - assert book_name in collector.favorites - - # Удаляем - collector.delete_book_from_favorites(book_name) - assert book_name not in collector.favorites - assert collector.favorites == [] - - # Тест 13: Удаление несуществующей книги из избранного - def test_delete_nonexistent_book_from_favorites(self): +#добавление в словарь избранную книг + def test_add_book_in_favorites_positive(self): collector = BooksCollector() + collector.add_new_book('Трое в лодке, не считая собаки') + collector.add_book_in_favorites('Трое в лодке, не считая собаки') + assert 'Трое в лодке, не считая собаки' in collector.favorites - # Попытка удалить несуществующую книгу не должна вызывать ошибку - collector.delete_book_from_favorites('Несуществующая книга') - assert collector.favorites == [] - - # Тест 14: Получение списка избранных книг - def test_get_list_of_favorites_books(self): + #удаление книги + def test_delete_book_from_favorites_positive(self): collector = BooksCollector() + collector.favorites = ['Убийство на улице Морг'] + collector.delete_book_from_favorites('Убийство на улице Морг') + assert 'Убийство на улице Морг' not in collector.favorites + assert - # Добавляем несколько книг в избранное - books = ['Книга 1', 'Книга 2', 'Книга 3'] - for book in books: - collector.add_new_book(book) - collector.add_book_in_favorites(book) - - favorites = collector.get_list_of_favorites_books() - - assert isinstance(favorites, list) - assert len(favorites) == 3 - assert favorites == books - - # Тест 15: Комплексный тест - несколько операций - def test_complex_scenario(self): +#вывод списка избранного + def test_get_list_of_favorites_books_positive(self) collector = BooksCollector() - - # Добавляем книги - collector.add_new_book('Властелин колец') - collector.add_new_book('Оно') - collector.add_new_book('Том и Джерри') - - # Устанавливаем жанры - collector.set_book_genre('Властелин колец', 'Фантастика') - collector.set_book_genre('Оно', 'Ужасы') - collector.set_book_genre('Том и Джерри', 'Мультфильмы') - - # Добавляем в избранное - collector.add_book_in_favorites('Властелин колец') - collector.add_book_in_favorites('Том и Джерри') - - # Проверяем - assert collector.get_book_genre('Властелин колец') == 'Фантастика' - assert len(collector.get_books_for_children()) == 2 # Фантастика и Мультфильмы - assert len(collector.get_list_of_favorites_books()) == 2 - - # Удаляем из избранного - collector.delete_book_from_favorites('Том и Джерри') - assert collector.get_list_of_favorites_books() == ['Властелин колец'] + collector.favorites = ['Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить'] + assert collector.get_list_of_favorites_books() == ['Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить'] From 0dd63012a3802a6354260a2302082ea9128bdaea Mon Sep 17 00:00:00 2001 From: Ivan Nosovets Date: Sun, 1 Feb 2026 11:40:23 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=20=D0=BD=D0=BE=D0=B2=D1=8B=D0=B9=20=D1=84=D0=B0=D0=B9=D0=BB=20?= =?UTF-8?q?tests1.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests1.py | 76 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 76 insertions(+) create mode 100644 tests1.py diff --git a/tests1.py b/tests1.py new file mode 100644 index 0000000..0599611 --- /dev/null +++ b/tests1.py @@ -0,0 +1,76 @@ +import pytest + +from main import BooksCollector + +class TestBooksCollector: +#Исправленные тесты +#добавление двух книг + def test_add_new_book_add_two_books(self): + collector = BooksCollector() + collector.add_new_book('Гордость и предубеждение и зомби') + collector.add_new_book('Что делать, если ваш кот хочет вас убить') + assert len(collector.get_books_genre()) == 2 + +#Неправильное название + @pytest.mark.parametrize('name', ['', 'a'*41]) + def test_add_new_book_invalid_name_lenght(self, name): + collector = BooksCollector() + collector.add_new_book(name) + assert name not in collector.books_genre +#жанр к названию кинги + def test_set_book_genre_add_one_genre(self): + collector = BooksCollector() + collector.add_new_book('Голова профессора Доуэля') + collector.set_book_genre('Голова профессора Доуэля', 'Фантастика') + assert collector.books_genre['Голова профессора Доуэля'] == 'Фантастика' +#возврат жанра по книги + def test_get_book_genre_positive(self): + collector = BooksCollector() + collector.add_new_book('Оно') + collector.books_genre['Оно'] = 'Ужасы' + assert collector.get_book_genre('Оно') == 'Ужасы' + #вывод списка по жанру + def test_get_books_with_specific_genre_positive(self): + collector = BooksCollector() + collector.books_genre.update({'Убийство на улице Морг': 'Детективы', 'Рассказы о Шерлоке Холмсе': 'Детективы'}) + result = collector.get_books_with_specific_genre('Детективы') + assert result == ['Убийство на улице Морг', 'Рассказы о Шерлоке Холмсе'] +#вывод словаряя + def test_get_books_genre_positive(self): + collector = BooksCollector() + collector.books_genre = {'Оно': 'Ужасы'} + assert collector.get_books_genre() == {'Оно': 'Ужасы'} +# + def test_get_books_for_children_positive(self): + collector = BooksCollector( + collector.books_genre = {'Голова профессора Доуэля': 'Фантастика'} + result = collector.get_books_for_children() + assert 'Голова профессора Доуэля' in result + +#недобавление книги жанра для детей + def test_get_books_for_children_negative(self) + collector = BooksCollector() + collector.books_genre = {'Оно': 'Ужасы'} + result = collector.get_books_for_children() + assert 'Оно' not in result + +#добавление в словарь избранную книг + def test_add_book_in_favorites_positive(self): + collector = BooksCollector() + collector.add_new_book('Трое в лодке, не считая собаки') + collector.add_book_in_favorites('Трое в лодке, не считая собаки') + assert 'Трое в лодке, не считая собаки' in collector.favorites + + #удаление книги + def test_delete_book_from_favorites_positive(self): + collector = BooksCollector() + collector.favorites = ['Убийство на улице Морг'] + collector.delete_book_from_favorites('Убийство на улице Морг') + assert 'Убийство на улице Морг' not in collector.favorites + assert + +#вывод списка избранного + def test_get_list_of_favorites_books_positive(self) + collector = BooksCollector() + collector.favorites = ['Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить'] + assert collector.get_list_of_favorites_books() == ['Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить']