From 552c4803b5336a36a621fe6f9511c2c9d4ee4dea Mon Sep 17 00:00:00 2001 From: Bruntsev Michael Date: Mon, 26 Jan 2026 15:17:48 +0700 Subject: [PATCH 1/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=D1=8B=20=D1=82=D0=B5=D1=81=D1=82=D1=8B=20=D0=B4=D0=BB?= =?UTF-8?q?=D1=8F=20=D0=BA=D0=BB=D0=B0=D1=81=D1=81=D0=B0=20BooksCollector?= =?UTF-8?q?=20=D0=B8=20README=20=D1=81=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=D0=BC=20=D1=82=D0=B5=D1=81=D1=82=D0=BE=D0=B2?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 12 ++++++++- tests.py | 75 ++++++++++++++++++++++++++++++++++++++++++++++++++++--- 2 files changed, 83 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 1cc701d..8c7daa4 100644 --- a/README.md +++ b/README.md @@ -1 +1,11 @@ -# qa_python \ No newline at end of file +# qa_python +test_add_new_book_add_two_books - метод add_new_book добавляет в словарь books_genre +test_add_new_book_name_longer_than40_not_added - метод add_new_book не добавляет книги в словарь books_genre с названием больше 40 символов (41 и 50) +test_set_book_genre_existing_book_genre_set - метод set_book_genre добавляет жанр существующей книге +test_get_book_genre_non_existing_book_none - метод get_book_genre не отображает отсутсвующие в списке books_genre книги +test_get_books_with_specific_genre_books_with_set_genre_returned - метод get_books_with_specific_genre возвращается список книг, по заданному жанру +test_get_books_genre_added_books_returned - метод get_books_genre возвращает books_genre с добавленными книгами +test_get_books_for_children_adult_genre_book_excluded - метод get_books_for_children не возвращает книгу с взрослым рейтингом +test_add_book_in_favorites_existing_book_added - метод add_book_in_favorites добавляет книгу в список избранного +test_delete_book_from_favorites_existing_book_deleted - метод delete_book_from_favorites удаляет присутствующую в списке избранного книгу +test_get_list_of_favorites_books_favorites_returned - метод get_list_of_favorites возвращает список избранных книг \ No newline at end of file diff --git a/tests.py b/tests.py index 383385e..fd31f73 100644 --- a/tests.py +++ b/tests.py @@ -1,4 +1,5 @@ from main import BooksCollector +import pytest # класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector # обязательно указывать префикс Test @@ -17,8 +18,76 @@ def test_add_new_book_add_two_books(self): collector.add_new_book('Что делать, если ваш кот хочет вас убить') # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + # словарь books_genre, который нам возвращает метод get_books_genre, имеет длину 2 + assert len(collector.get_books_genre()) == 2 # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() + @pytest.mark.parametrize('book_name',['А' * 41,'Б' * 50]) + def test_add_new_book_name_longer_than40_not_added(self, book_name): + collector = BooksCollector() + collector.add_new_book(book_name) + assert len(collector.get_books_genre()) == 0 + + def test_set_book_genre_existing_book_genre_set(self): + collector = BooksCollector() + collector.add_new_book('Извилистый путь') + collector.set_book_genre('Извилистый путь', 'Комедии') + assert collector.get_book_genre('Извилистый путь') == 'Комедии' + + def test_get_book_genre_non_existing_book_none(self): + collector = BooksCollector() + assert collector.get_book_genre('Голос между') is None + + def test_get_books_with_specific_genre_books_with_set_genre_returned(self): + collector = BooksCollector() + collector.add_new_book('Split Fiction') + collector.add_new_book('Звездные войны') + collector.add_new_book('Песнь льда и пламени') + collector.set_book_genre('Split Fiction','Фантастика') + collector.set_book_genre('Звездные войны', 'Фантастика') + collector.set_book_genre('Песнь льда и пламени', 'Ужасы') + books = collector.get_books_with_specific_genre('Фантастика') + assert set (books) == {'Split Fiction', 'Звездные войны'} + + def test_get_books_genre_added_books_returned(self): + collector = BooksCollector() + collector.add_new_book('Изгой') + collector.add_new_book('Достать ножи') + collector.set_book_genre('Изгой', 'Фантастика') + collector.set_book_genre('Достать ножи', 'Детективы') + books_genre = collector.get_books_genre() + expected = { + 'Изгой': 'Фантастика', + 'Достать ножи': 'Детективы' + } + assert books_genre == expected + + def test_get_books_for_children_adult_genre_book_excluded(self): + collector = BooksCollector() + collector.add_new_book('Тетрадь смерти') + collector.set_book_genre('Тетрадь смерти', 'Ужасы') + books_for_children = collector.get_books_for_children() + assert 'Тетрадь смерти' not in books_for_children + + def test_add_book_in_favorites_existing_book_added(self): + collector = BooksCollector() + collector.add_new_book('Властелин колец') + collector.add_book_in_favorites('Властелин колец') + assert 'Властелин колец' in collector.get_list_of_favorites_books() + + def test_delete_book_from_favorites_existing_book_deleted(self): + collector = BooksCollector() + collector.add_new_book('Гарри Поттер') + collector.add_book_in_favorites('Гарри Поттер') + collector.delete_book_from_favorites('Гарри Поттер') + assert 'Гарри Поттер' not in collector.get_list_of_favorites_books() + + def test_get_list_of_favorites_books_favorites_returned(self): + collector = BooksCollector() + collector.add_new_book('Шерлок Холмс') + collector.add_new_book('Тени Орды') + collector.add_book_in_favorites('Шерлок Холмс') + collector.add_book_in_favorites('Тени Орды') + favorites = collector.get_list_of_favorites_books() + assert set(favorites) == {'Шерлок Холмс', 'Тени Орды'} \ No newline at end of file From 1e633391b94ec939524d43263811953ff862a950 Mon Sep 17 00:00:00 2001 From: Bruntsev Michael Date: Tue, 27 Jan 2026 12:51:55 +0700 Subject: [PATCH 2/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=82=D0=B5=D1=81=D1=82:test=5Fadd=5Fnew=5Fbook=5Fexi?= =?UTF-8?q?sting=5Fbook=5Fnot=5Fadded=20-=20=D0=BF=D0=BE=D0=B2=D1=82=D0=BE?= =?UTF-8?q?=D1=80=D0=BD=D0=BE=D0=B5=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB?= =?UTF-8?q?=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BD=D0=B8=D0=B3=D0=B8=20?= =?UTF-8?q?=D0=BD=D0=B5=20=D1=81=D0=BE=D0=B7=D0=B4=D0=B0=D1=91=D1=82=20?= =?UTF-8?q?=D0=B4=D1=83=D0=B1=D0=BB=D1=8C?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 5 +++-- tests.py | 6 ++++++ 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index 8c7daa4..0d716c4 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,5 @@ # qa_python -test_add_new_book_add_two_books - метод add_new_book добавляет в словарь books_genre +test_add_new_book_add_two_books - метод add_new_book добавляет две книги в словарь books_genre test_add_new_book_name_longer_than40_not_added - метод add_new_book не добавляет книги в словарь books_genre с названием больше 40 символов (41 и 50) test_set_book_genre_existing_book_genre_set - метод set_book_genre добавляет жанр существующей книге test_get_book_genre_non_existing_book_none - метод get_book_genre не отображает отсутсвующие в списке books_genre книги @@ -8,4 +8,5 @@ test_get_books_genre_added_books_returned - метод get_books_genre возв test_get_books_for_children_adult_genre_book_excluded - метод get_books_for_children не возвращает книгу с взрослым рейтингом test_add_book_in_favorites_existing_book_added - метод add_book_in_favorites добавляет книгу в список избранного test_delete_book_from_favorites_existing_book_deleted - метод delete_book_from_favorites удаляет присутствующую в списке избранного книгу -test_get_list_of_favorites_books_favorites_returned - метод get_list_of_favorites возвращает список избранных книг \ No newline at end of file +test_get_list_of_favorites_books_favorites_returned - метод get_list_of_favorites возвращает список избранных книг +test_add_new_book_existing_book_not_added - метод add_new_book не добавляет дубликат книги в словарь books_genre \ No newline at end of file diff --git a/tests.py b/tests.py index fd31f73..1e6646f 100644 --- a/tests.py +++ b/tests.py @@ -28,6 +28,12 @@ def test_add_new_book_name_longer_than40_not_added(self, book_name): collector = BooksCollector() collector.add_new_book(book_name) assert len(collector.get_books_genre()) == 0 + + def test_add_new_book_existing_book_not_added(self): + collector = BooksCollector() + collector.add_new_book('Дюна') + collector.add_new_book('Дюна') + assert len(collector.get_books_genre()) == 1 def test_set_book_genre_existing_book_genre_set(self): collector = BooksCollector() From 4e375ed8b93e89ee846705b1172462fb4ccd9fe6 Mon Sep 17 00:00:00 2001 From: Bruntsev Michael Date: Tue, 27 Jan 2026 13:06:02 +0700 Subject: [PATCH 3/4] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20=D1=82=D0=B5=D1=81=D1=82:=20test=5Fadd=5Fnew=5Fbook=5F?= =?UTF-8?q?name=5Fis=5F40=5Fsymbols=5Fadded=20-=20=D0=BD=D0=B0=D0=B7=D0=B2?= =?UTF-8?q?=D0=B0=D0=BD=D0=B8=D0=B5=20=D0=BA=D0=BD=D0=B8=D0=B3=D0=B8=20?= =?UTF-8?q?=D0=B4=D0=BB=D0=B8=D0=BD=D0=BE=D0=B9=2040=20=D1=81=D0=B8=D0=BC?= =?UTF-8?q?=D0=B2=D0=BE=D0=BB=D0=BE=D0=B2=20=D1=83=D1=81=D0=BF=D0=B5=D1=88?= =?UTF-8?q?=D0=BD=D0=BE=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D1=8F=D0=B5?= =?UTF-8?q?=D1=82=D1=81=D1=8F?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 3 ++- tests.py | 6 ++++++ 2 files changed, 8 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 0d716c4..9490e48 100644 --- a/README.md +++ b/README.md @@ -9,4 +9,5 @@ test_get_books_for_children_adult_genre_book_excluded - метод get_books_for test_add_book_in_favorites_existing_book_added - метод add_book_in_favorites добавляет книгу в список избранного test_delete_book_from_favorites_existing_book_deleted - метод delete_book_from_favorites удаляет присутствующую в списке избранного книгу test_get_list_of_favorites_books_favorites_returned - метод get_list_of_favorites возвращает список избранных книг -test_add_new_book_existing_book_not_added - метод add_new_book не добавляет дубликат книги в словарь books_genre \ No newline at end of file +test_add_new_book_existing_book_not_added - метод add_new_book не добавляет дубликат книги в словарь books_genre +test_add_new_book_name_is_40_symbols_added - метод add_new_book добавляет книгу с названием длиной в 40 символов в словарь books_genre diff --git a/tests.py b/tests.py index 1e6646f..e9893d0 100644 --- a/tests.py +++ b/tests.py @@ -23,6 +23,12 @@ def test_add_new_book_add_two_books(self): # напиши свои тесты ниже # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() + def test_add_new_book_name_is_40_symbols_added(self): + collector = BooksCollector() + book_name = 'А' * 40 + collector.add_new_book(book_name) + assert len(collector.get_books_genre()) == 1 + @pytest.mark.parametrize('book_name',['А' * 41,'Б' * 50]) def test_add_new_book_name_longer_than40_not_added(self, book_name): collector = BooksCollector() From 9f5d2dfef53baa4aba306887dd8acd44652ed860 Mon Sep 17 00:00:00 2001 From: Bruntsev Michael Date: Tue, 27 Jan 2026 13:14:40 +0700 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=20=D1=82=D0=B5=D1=81=D1=82:=20test=5Fadd=5Fbook=5Fin=5Ff?= =?UTF-8?q?avorites=5Fnon=5Fexisting=5Fbook=5Fnot=5Fadded=20-=20=D0=BD?= =?UTF-8?q?=D0=B5=D0=BB=D1=8C=D0=B7=D1=8F=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D1=82=D1=8C=20=D0=B2=20=D0=B8=D0=B7=D0=B1=D1=80=D0=B0?= =?UTF-8?q?=D0=BD=D0=BD=D0=BE=D0=B5=20=D0=BA=D0=BD=D0=B8=D0=B3=D1=83,=20?= =?UTF-8?q?=D0=BE=D1=82=D1=81=D1=83=D1=82=D1=81=D1=82=D0=B2=D1=83=D1=8E?= =?UTF-8?q?=D1=89=D1=83=D1=8E=20=D0=B2=20=D0=BA=D0=BE=D0=BB=D0=BB=D0=B5?= =?UTF-8?q?=D0=BA=D1=86=D0=B8=D0=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 1 + tests.py | 5 +++++ 2 files changed, 6 insertions(+) diff --git a/README.md b/README.md index 9490e48..cb45133 100644 --- a/README.md +++ b/README.md @@ -11,3 +11,4 @@ test_delete_book_from_favorites_existing_book_deleted - метод delete_book_f test_get_list_of_favorites_books_favorites_returned - метод get_list_of_favorites возвращает список избранных книг test_add_new_book_existing_book_not_added - метод add_new_book не добавляет дубликат книги в словарь books_genre test_add_new_book_name_is_40_symbols_added - метод add_new_book добавляет книгу с названием длиной в 40 символов в словарь books_genre +test_add_book_in_favorites_non_existing_book_not_added - метод add_book_in_favorites не добавляет в избранное книгу, которая не была добавлена в коллекцию diff --git a/tests.py b/tests.py index e9893d0..e306b5d 100644 --- a/tests.py +++ b/tests.py @@ -88,6 +88,11 @@ def test_add_book_in_favorites_existing_book_added(self): collector.add_book_in_favorites('Властелин колец') assert 'Властелин колец' in collector.get_list_of_favorites_books() + def test_add_book_in_favorites_non_existing_book_not_added(self): + collector = BooksCollector() + collector.add_book_in_favorites('Ветра зимы') + assert 'Ветра зимы' not in collector.get_list_of_favorites_books() + def test_delete_book_from_favorites_existing_book_deleted(self): collector = BooksCollector() collector.add_new_book('Гарри Поттер')