From 1abe7a6607b9d12f04de49f06f6452e6bcaf5be5 Mon Sep 17 00:00:00 2001 From: Taisia Volchkova Date: Thu, 5 Feb 2026 11:43:20 +0300 Subject: [PATCH 1/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=BF=D0=BE=D1=81=D0=BB=D0=B5=D0=B4=D0=BD=D0=B5?= =?UTF-8?q?=D0=B5=20=D0=BE=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5=D0=BD=D0=B8?= =?UTF-8?q?=D0=B5?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/README.md b/README.md index 1cc701d..93404b1 100644 --- a/README.md +++ b/README.md @@ -1 +1 @@ -# qa_python \ No newline at end of file +# qa_python# Последние изменения From d04c4e82c331c58359d75a7a4c59c8c0d7e67ab0 Mon Sep 17 00:00:00 2001 From: Taisia Volchkova Date: Thu, 5 Feb 2026 12:02:27 +0300 Subject: [PATCH 2/3] =?UTF-8?q?=D0=9E=D0=B1=D0=BD=D0=BE=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20README.md=20=D0=B8=20tests.py?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 16 +++++++++++ tests.py | 83 +++++++++++++++++++++++++++++++++++++++++++++---------- 2 files changed, 85 insertions(+), 14 deletions(-) diff --git a/README.md b/README.md index 93404b1..0c79a9f 100644 --- a/README.md +++ b/README.md @@ -1 +1,17 @@ # qa_python# Последние изменения +Тесты на добавление книг: +add_new_book: Проверяется успешное добавление двух книг в коллекцию. После добавления количество книг должно равняться двум. +Тесты на установку жанра книге: +set_book_genre: Проверяется установка конкретного жанра («Фантастика») одной из книг коллекции. +Тесты на получение жанра книги: +get_book_genre: Подтверждается правильность присвоенного ранее жанра конкретной книге. +Тесты на фильтрацию книг по жанру: +get_books_with_specific_genre: Выбираются книги заданного жанра («Фантастика»), и проверка результата подтверждает наличие соответствующих книг в списке. +Тесты на выбор детских книг: +get_books_for_children: Система должна исключить из списка взрослые произведения («Ужасы») и включить детские («Мультфильм»). +Тесты на добавление книг в "избранное": +add_book_in_favorites: Пользователь добавляет книгу в избранные, и проверка подтверждает её присутствие среди фаворитов. +Тест на удаление из избранного: +delete_book_from_favorites: Удаление книги из избранных и подтверждение отсутствия удалённой книги в итоговом списке. +Тест на вывод пустого списка избранных книг: +get_list_of_favorites_books: оОтсутствие книг в пустом списке избранных. diff --git a/tests.py b/tests.py index 383385e..d179a11 100644 --- a/tests.py +++ b/tests.py @@ -1,24 +1,79 @@ 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('Что делать, если ваш кот хочет вас убить') + assert len(collector.get_books_genre()) == 2 + + # Тест метода set_book_genre + def test_set_book_genre(self): + collector = BooksCollector() + collector.add_new_book('Книга1') + collector.set_book_genre('Книга1', 'Фантастика') + assert collector.get_book_genre('Книга1') == 'Фантастика' + + # Тест метода get_book_genre + def test_get_book_genre(self): + collector = BooksCollector() + collector.add_new_book('Вишневый сад') + collector.set_book_genre('Вишневый сад', 'Комедия') + result = collector.get_book_genre('Вишневый сад') + assert result == 'Комедия' + + # Тест метода get_books_with_specific_genre + def test_get_books_with_specific_genre(self): + collector = BooksCollector() + collector.add_new_book('Оно') + collector.set_book_genre('Оно', 'Ужасы') + collector.add_new_book('Марсианин') + collector.set_book_genre('Марсианин', 'Фантастика') + collector.add_new_book('Пикник на обочине') + collector.set_book_genre('Пикник на обочине', 'Фантастика') + result = collector.get_books_with_specific_genre("Фантастика") + assert result == ['Марсианин', 'Пикник на обочине'] - # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + # Тест метода get_books_for_children + def test_get_books_for_children_exclude_adult_books(self): + collector = BooksCollector() + collector.add_new_book('Психо') + collector.set_book_genre('Психо', 'Ужасы') + collector.add_new_book('Оно') + collector.set_book_genre('Оно', 'Ужасы') + collector.add_new_book('Ну, погоди!') + collector.set_book_genre('Ну, погоди!', 'Мультфильмы') + result = collector.get_books_for_children() + assert 'Ну, погоди!' in result + assert 'Психо' not in result + assert 'Оно' not in result - # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + # Тест метода add_book_in_favorites + def test_add_book_in_favorites_success(self): + collector = BooksCollector() + collector.add_new_book('Оно') + collector.set_book_genre('Оно', 'Ужасы') + collector.add_book_in_favorites('Оно') + assert 'Оно' in collector.get_list_of_favorites_books() + + #Тест метода delete_book_from_favorites + def test_delete_book_from_favorites_success(self): + collector = BooksCollector() + collector.add_new_book('Оно') + collector.set_book_genre('Оно', 'Ужасы') + collector.add_book_in_favorites('Оно') + collector.delete_book_from_favorites('Оно') + assert 'Оно' not in collector.get_list_of_favorites_books() + + #Тест метода get_list_of_favorites_books + def test_get_list_of_favorites_empty(self): + collector = BooksCollector() + result = collector.get_list_of_favorites_books() + assert result == [] + + #Тест метода get_books_genre + def test_get_books_genre_empty(self): + collector = BooksCollector() + result = collector.get_books_genre() + assert result == {} \ No newline at end of file From 9625b39f080c9dc8752e6679d2469b69b1061ddd Mon Sep 17 00:00:00 2001 From: Taisia Volchkova Date: Sun, 15 Feb 2026 15:21:02 +0300 Subject: [PATCH 3/3] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D0=B0=20=D1=84=D0=B8=D0=BA=D1=81=D1=82=D1=83=D1=80=D0=B0?= =?UTF-8?q?=20=D0=B8=20=D0=BF=D0=B5=D1=80=D0=B5=D1=80=D0=B0=D0=B1=D0=BE?= =?UTF-8?q?=D1=82=D0=B0=D0=BD=D1=8B=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20?= =?UTF-8?q?=D1=81=20=D0=B5=D1=91=20=D0=B8=D1=81=D0=BF=D0=BE=D0=BB=D1=8C?= =?UTF-8?q?=D0=B7=D0=BE=D0=B2=D0=B0=D0=BD=D0=B8=D0=B5=D0=BC?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .gitignore | 2 + conftest.py | 6 +++ tests.py | 104 +++++++++++++++++++++++----------------------------- 3 files changed, 54 insertions(+), 58 deletions(-) create mode 100644 .gitignore create mode 100644 conftest.py diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..7a60b85 --- /dev/null +++ b/.gitignore @@ -0,0 +1,2 @@ +__pycache__/ +*.pyc diff --git a/conftest.py b/conftest.py new file mode 100644 index 0000000..6e64ec9 --- /dev/null +++ b/conftest.py @@ -0,0 +1,6 @@ +import pytest +from main import BooksCollector + +@pytest.fixture +def books_collector(): + return BooksCollector() \ No newline at end of file diff --git a/tests.py b/tests.py index d179a11..6a17572 100644 --- a/tests.py +++ b/tests.py @@ -1,79 +1,67 @@ -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 + def test_add_new_book_add_two_books(self, books_collector): + books_collector.add_new_book('Гордость и предубеждение и зомби') + books_collector.add_new_book('Что делать, если ваш кот хочет вас убить') + assert len(books_collector.get_books_genre()) == 2 # Тест метода set_book_genre - def test_set_book_genre(self): - collector = BooksCollector() - collector.add_new_book('Книга1') - collector.set_book_genre('Книга1', 'Фантастика') - assert collector.get_book_genre('Книга1') == 'Фантастика' + def test_set_book_genre(self, books_collector): + books_collector.add_new_book('Книга1') + books_collector.set_book_genre('Книга1', 'Фантастика') + assert books_collector.get_book_genre('Книга1') == 'Фантастика' # Тест метода get_book_genre - def test_get_book_genre(self): - collector = BooksCollector() - collector.add_new_book('Вишневый сад') - collector.set_book_genre('Вишневый сад', 'Комедия') - result = collector.get_book_genre('Вишневый сад') - assert result == 'Комедия' + def test_get_book_genre_no_genre(self, books_collector): + books_collector.add_new_book('Вишневый сад') + result = books_collector.get_book_genre('Вишневый сад') + assert result is None or result == '' # Тест метода get_books_with_specific_genre - def test_get_books_with_specific_genre(self): - collector = BooksCollector() - collector.add_new_book('Оно') - collector.set_book_genre('Оно', 'Ужасы') - collector.add_new_book('Марсианин') - collector.set_book_genre('Марсианин', 'Фантастика') - collector.add_new_book('Пикник на обочине') - collector.set_book_genre('Пикник на обочине', 'Фантастика') - result = collector.get_books_with_specific_genre("Фантастика") + def test_get_books_with_specific_genre(self, books_collector): + books_collector.add_new_book('Оно') + books_collector.set_book_genre('Оно', 'Ужасы') + books_collector.add_new_book('Марсианин') + books_collector.set_book_genre('Марсианин', 'Фантастика') + books_collector.add_new_book('Пикник на обочине') + books_collector.set_book_genre('Пикник на обочине', 'Фантастика') + result = books_collector.get_books_with_specific_genre("Фантастика") assert result == ['Марсианин', 'Пикник на обочине'] # Тест метода get_books_for_children - def test_get_books_for_children_exclude_adult_books(self): - collector = BooksCollector() - collector.add_new_book('Психо') - collector.set_book_genre('Психо', 'Ужасы') - collector.add_new_book('Оно') - collector.set_book_genre('Оно', 'Ужасы') - collector.add_new_book('Ну, погоди!') - collector.set_book_genre('Ну, погоди!', 'Мультфильмы') - result = collector.get_books_for_children() + def test_get_books_for_children_exclude_adult_books(self, books_collector): + books_collector.add_new_book('Психо') + books_collector.set_book_genre('Психо', 'Ужасы') + books_collector.add_new_book('Оно') + books_collector.set_book_genre('Оно', 'Ужасы') + books_collector.add_new_book('Ну, погоди!') + books_collector.set_book_genre('Ну, погоди!', 'Мультфильмы') + result = books_collector.get_books_for_children() assert 'Ну, погоди!' in result assert 'Психо' not in result assert 'Оно' not in result # Тест метода add_book_in_favorites - def test_add_book_in_favorites_success(self): - collector = BooksCollector() - collector.add_new_book('Оно') - collector.set_book_genre('Оно', 'Ужасы') - collector.add_book_in_favorites('Оно') - assert 'Оно' in collector.get_list_of_favorites_books() + def test_add_book_in_favorites_success(self, books_collector): + books_collector.add_new_book('Оно') + books_collector.set_book_genre('Оно', 'Ужасы') + books_collector.add_book_in_favorites('Оно') + assert 'Оно' in books_collector.get_list_of_favorites_books() - #Тест метода delete_book_from_favorites - def test_delete_book_from_favorites_success(self): - collector = BooksCollector() - collector.add_new_book('Оно') - collector.set_book_genre('Оно', 'Ужасы') - collector.add_book_in_favorites('Оно') - collector.delete_book_from_favorites('Оно') - assert 'Оно' not in collector.get_list_of_favorites_books() + # Тест метода delete_book_from_favorites + def test_delete_book_from_favorites_success(self, books_collector): + books_collector.add_new_book('Оно') + books_collector.set_book_genre('Оно', 'Ужасы') + books_collector.add_book_in_favorites('Оно') + books_collector.delete_book_from_favorites('Оно') + assert 'Оно' not in books_collector.get_list_of_favorites_books() - #Тест метода get_list_of_favorites_books - def test_get_list_of_favorites_empty(self): - collector = BooksCollector() - result = collector.get_list_of_favorites_books() + # Тест метода get_list_of_favorites_books + def test_get_list_of_favorites_empty(self, books_collector): + result = books_collector.get_list_of_favorites_books() assert result == [] - #Тест метода get_books_genre - def test_get_books_genre_empty(self): - collector = BooksCollector() - result = collector.get_books_genre() + # Тест метода get_books_genre + def test_get_books_genre_empty(self, books_collector): + result = books_collector.get_books_genre() assert result == {} \ No newline at end of file