From efc74a18377982833bb46ee339cde6a18f14b499 Mon Sep 17 00:00:00 2001 From: kamilachka2909-ctrl Date: Sun, 26 Oct 2025 22:10:13 +0300 Subject: [PATCH 1/4] Sprint_4 --- tests.py | 166 ++++++++++++++++++++++++++++++++++++++++++++++++++----- 1 file changed, 151 insertions(+), 15 deletions(-) diff --git a/tests.py b/tests.py index 383385e..4347de1 100644 --- a/tests.py +++ b/tests.py @@ -1,24 +1,160 @@ from main import BooksCollector +import pytest -# класс 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('Что делать, если ваш кот хочет вас убить') + # Добавляем две разные книги + collector.add_new_book('Мастер и Маргарита') + collector.add_new_book('Ася') + + # Проверяем, что обе книги добавлены + assert len(collector.books_genre) == 2 + + + @pytest.mark.parametrize( + 'name, genre', + [ + ('Бегущий в лабиринте', 'Фантастика'), + ('Шерлок Холмс', 'Детективы'), + ('Восставший из ада', 'Ужасы'), + ('Карлосон', 'Мультфильмы'), + ('Горе от ума', 'Комедии') + ] + ) + def test_set_book_genre_valid_input_genre_assigned(self, name, genre): + collector = BooksCollector() + + # Добавляем книгу и устанавливаем корректный жанр + collector.add_new_book(name) + collector.set_book_genre(name, genre) + + # Проверяем, что жанр установлен корректно + assert collector.books_genre[name] == genre + + + @pytest.mark.parametrize( + 'name, genre', + [ + ('Бегущий в лабиринте', 'Фантастика'), + ('Шерлок Холмс', 'Детективы'), + ('Восставший из ада', 'Ужасы'), + ('Карлосон', 'Мультфильмы'), + ('Горе от ума', 'Комедии') + ] + ) + def test_get_book_genre_existing_book_returns_correct_genre(self, name, genre): + collector = BooksCollector() + + # Добавляем книгу и задаем жанр + collector.add_new_book(name) + collector.set_book_genre(name, genre) + + # Проверяем, что метод возвращает правильный жанр + assert collector.get_book_genre(name) == genre + + + def test_get_books_with_specific_genre_fantasy_return_all_matching_books(self): + collector = BooksCollector() + + books = ['Человек амфибия', 'Властелин колец', 'Война миров'] + genre = 'Фантастика' + + # Добавляем книги с жанром "Фантастика" + for name in books: + collector.add_new_book(name) + collector.set_book_genre(name, genre) + + # Получаем список книг с жанром "Фантастика" + books_in_genre = collector.get_books_with_specific_genre(genre) + + # Проверяем, что все добавленные книги вернулись + assert books_in_genre == books + + + def test_get_books_genre_new_collector_returns_empty_dict(self): + collector = BooksCollector() + + # Проверяем, что у нового объекта словарь пуст + assert collector.get_books_genre() == {} + + + @pytest.mark.parametrize( + 'name, genre', + [ + ('Бегущий в лабиринте', 'Фантастика'), + ('Карлосон', 'Мультфильмы'), + ('Горе от ума', 'Комедии') + ] + ) + def test_get_books_for_children_books_with_allowed_genres_in_list(self, name, genre): + collector = BooksCollector() + + # Добавляем книгу с "безопасным" жанром + collector.add_new_book(name) + collector.set_book_genre(name, genre) + + # Проверяем, что книга попала в список детских + assert name in collector.get_books_for_children() + + + def test_add_book_in_favorites_new_book_added(self): + collector = BooksCollector() + + # Добавляем книгу + collector.add_new_book('Бегущий в лабиринте') + + # Добавляем книгу в избранное дважды + collector.add_book_in_favorites('Бегущий в лабиринте') + + # Проверяем, что книга в списке избранных + favorites = collector.get_list_of_favorites_books() + assert 'Бегущий в лабиринте' in favorites + + + def test_add_book_in_favorites_book_already_in_favorites_not_added(self): + collector = BooksCollector() + + # Добавляем книгу + collector.add_new_book('Шерлок Холмс') + + # Добавляем книгу в избранное дважды + collector.add_book_in_favorites('Шерлок Холмс') + collector.add_book_in_favorites('Шерлок Холмс') + + # Проверяем, что книга в списке избранных только один раз + favorites = collector.get_list_of_favorites_books() + assert favorites.count('Шерлок Холмс') == 1 + + + def test_delete_book_from_favorites_book_in_favorites_book_removed(self): + collector = BooksCollector() + + # Добавляем книгу и добавляем ее в избранное + collector.add_new_book('Шерлок Холмс') + collector.add_book_in_favorites('Шерлок Холмс') + + # Удаляем книгу из избранного + collector.delete_book_from_favorites('Шерлок Холмс') + + # Проверяем, что её больше нет в списке избранных + favorites = collector.get_list_of_favorites_books() + assert 'Шерлок Холмс' not in favorites + + + def test_get_list_of_favorites_returns_all_favorite_books(self): + collector = BooksCollector() + + # Добавляем книги + collector.add_new_book('Шерлок Холмс') + collector.add_new_book('Мастер и Маргарита') - # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + # Добавляем обе книги в избранное + collector.add_book_in_favorites('Шерлок Холмс') + collector.add_book_in_favorites('Мастер и Маргарита') - # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + # Проверяем, что список избранных содержит обе книги + assert collector.get_list_of_favorites_books() == ['Шерлок Холмс', 'Мастер и Маргарита'] From d4358cde18388e99b277630eb0450bd4fa0aca3c Mon Sep 17 00:00:00 2001 From: kamilachka2909-ctrl Date: Sun, 26 Oct 2025 22:24:43 +0300 Subject: [PATCH 2/4] qa_python.Sprint_4 --- README.md | 17 ++++++++++++++++- 1 file changed, 16 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1cc701d..821667b 100644 --- a/README.md +++ b/README.md @@ -1 +1,16 @@ -# qa_python \ No newline at end of file +# qa_python +**Sprint_4** + +**Реализованные тесты:** + +test_add_new_book_add_two_books_books_count_is_two - метод add_new_book, добавление двух новых книг. +test_set_book_genre_valid_input_genre_assigned - методы set_book_genre, при передаче корректных данных жанр книги устанавливается и получаем словарь books_genre с указаанием жанра. +test_get_book_genre_existing_book_returns_correct_genre - методы get_book_genre, получаем словарь books_genre с жанром книги по её названию. +test_get_books_with_specific_genre_fantasy_return_all_matching_books - метод get_books_with_specific_genre, выводятся все добавленные книги в жанре фантастики. +test_get_books_genre_new_collector_returns_empty_dict - метод get_books_genre возвращает пустой словарь для нового объекта. +test_get_books_for_children_books_with_allowed_genres_in_list - метод get_books_for_children, если книга не принадлежит к жанру из возрастных ограничений, то она включается в список, возвращаемый методом. +test_add_book_in_favorites_new_book_added - метод add_book_in_favorites, новая книга добавляется в список избранных. +test_add_book_in_favorites_book_already_in_favorites_not_added - метод add_book_in_favorites, книга повторно не добавляется, если она уже есть в списке избранных. +test_delete_book_from_favorites_book_in_favorites_book_removed - метод delete_book_from_favorites_books, книга удаляется из списка избранных. +test_get_list_of_favorites_returns_all_favorite_books - метод get_list_of_favorites выводит список с избранными книгами. + From bc2da30bbb2870ead30238d203ce757f3b924571 Mon Sep 17 00:00:00 2001 From: kamilachka2909-ctrl Date: Sun, 26 Oct 2025 22:25:31 +0300 Subject: [PATCH 3/4] Update README.md --- README.md | 9 +++++++++ 1 file changed, 9 insertions(+) diff --git a/README.md b/README.md index 821667b..a7c912d 100644 --- a/README.md +++ b/README.md @@ -4,13 +4,22 @@ **Реализованные тесты:** test_add_new_book_add_two_books_books_count_is_two - метод add_new_book, добавление двух новых книг. + test_set_book_genre_valid_input_genre_assigned - методы set_book_genre, при передаче корректных данных жанр книги устанавливается и получаем словарь books_genre с указаанием жанра. + test_get_book_genre_existing_book_returns_correct_genre - методы get_book_genre, получаем словарь books_genre с жанром книги по её названию. + test_get_books_with_specific_genre_fantasy_return_all_matching_books - метод get_books_with_specific_genre, выводятся все добавленные книги в жанре фантастики. + test_get_books_genre_new_collector_returns_empty_dict - метод get_books_genre возвращает пустой словарь для нового объекта. + test_get_books_for_children_books_with_allowed_genres_in_list - метод get_books_for_children, если книга не принадлежит к жанру из возрастных ограничений, то она включается в список, возвращаемый методом. + test_add_book_in_favorites_new_book_added - метод add_book_in_favorites, новая книга добавляется в список избранных. + test_add_book_in_favorites_book_already_in_favorites_not_added - метод add_book_in_favorites, книга повторно не добавляется, если она уже есть в списке избранных. + test_delete_book_from_favorites_book_in_favorites_book_removed - метод delete_book_from_favorites_books, книга удаляется из списка избранных. + test_get_list_of_favorites_returns_all_favorite_books - метод get_list_of_favorites выводит список с избранными книгами. From 7167416b6cc3e30bfbb8083fd1fb994f524f290d Mon Sep 17 00:00:00 2001 From: kamilachka2909-ctrl Date: Wed, 29 Oct 2025 22:12:25 +0300 Subject: [PATCH 4/4] =?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=D0=BF=D0=BE=D0=B7=D0=B8=D1=82=D0=B8=D0=B2=D0=BD?= =?UTF-8?q?=D0=B0=D1=8F=20=D0=BF=D1=80=D0=BE=D0=B2=D0=B5=D1=80=D0=BA=D0=B0?= =?UTF-8?q?=20get=5Fbooks=5Fgenre?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- tests.py | 13 +++++++++++++ 1 file changed, 13 insertions(+) diff --git a/tests.py b/tests.py index 4347de1..1ed56b6 100644 --- a/tests.py +++ b/tests.py @@ -74,6 +74,19 @@ def test_get_books_with_specific_genre_fantasy_return_all_matching_books(self): # Проверяем, что все добавленные книги вернулись assert books_in_genre == books +#Позитивная проверка get_books_genre: вывод текущего словаря books_genre + def test_get_books_genre_success(self, collector): + collector = BooksCollector() + + collector.add_new_book('Шерлок Холмс') + collector.set_book_genre('Шерлок Холмс', 'Детективы') + collector.add_new_book('Горе от ума') + collector.set_book_genre('Горе от ума', 'Комедии') + assert collector.get_books_genre() == { + 'Шерлок Холмс': 'Детективы', + 'Горе от ума': 'Комедии' + } + def test_get_books_genre_new_collector_returns_empty_dict(self): collector = BooksCollector()