From bf760a5c1e18f9186d0cde73936f53b01e06adc6 Mon Sep 17 00:00:00 2001 From: Alexander Tokmakov Date: Fri, 20 Mar 2026 15:53:09 +0500 Subject: [PATCH 1/4] First commit: change tests.py --- .gitignore | 3 +++ README.md | 9 ++++++- main.py | 9 +++++++ tests.py | 77 ++++++++++++++++++++++++++++++++++++++++++++---------- 4 files changed, 83 insertions(+), 15 deletions(-) create mode 100644 .gitignore diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..141c039 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +.vscode/ +__pycache__/main.cpython-314.pyc +__pycache__/tests.cpython-314-pytest-9.0.2.pyc diff --git a/README.md b/README.md index 1cc701d..4be027b 100644 --- a/README.md +++ b/README.md @@ -1 +1,8 @@ -# qa_python \ No newline at end of file +# qa_python +# 1. test_set_book_genre_set_know_genre_book_added - Проверка метода установки жанра книги, если книга есть в books_genre и её жанр входит в список genre +# 2. test_get_book_genre_know_book_get_genre_done - Проверка метода вывода жанра книги по её имени + получение словаря books_genre +# 3. test_get_books_with_specific_genre_know_genre_get_book_done - Проверка метода вывода списка книг с определённым жанром +# 4. test_get_books_for_children_add_two_books_one_book_added - Проверка метода возврата книг, которые подходят детям +# 5. test_add_book_in_favorites_add_one_book_book_added - Проверка метода добавления книги в избранное + получение списка избранных книг +# 6. test_delete_book_from_favorites_delete_one_book_book_deleted - Проверка удаления книги из избранного +# 7. test_positive_input(name) - Проверка добавления книги с количеством символов в названии (1,2,20,39,40) \ No newline at end of file diff --git a/main.py b/main.py index d3e0a17..06a655a 100644 --- a/main.py +++ b/main.py @@ -55,3 +55,12 @@ def delete_book_from_favorites(self, name): # получаем список Избранных книг def get_list_of_favorites_books(self): return self.favorites + + + + +collector = BooksCollector() + +collector.add_new_book('Гордость и предубеждение и зомби') +print(collector.books_genre) + diff --git a/tests.py b/tests.py index 383385e..a94799b 100644 --- a/tests.py +++ b/tests.py @@ -1,24 +1,73 @@ 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 + def test_add_new_book_add_two_books_books_added(self): collector = BooksCollector() - # добавляем две книги collector.add_new_book('Гордость и предубеждение и зомби') collector.add_new_book('Что делать, если ваш кот хочет вас убить') - # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + assert len(collector.get_books_genre()) == 2 + + def test_set_book_genre_set_know_genre_book_added(self): + collector = BooksCollector() + + collector.add_new_book('Гордость и предубеждение и зомби') + collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') + + assert collector.get_books_genre() == {'Гордость и предубеждение и зомби': 'Ужасы'} + + def test_get_book_genre_know_book_get_genre_done(self): + collector = BooksCollector() + + collector.add_new_book('Гордость и предубеждение и зомби') + collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') + collector.get_book_genre('Гордость и предубеждение и зомби') + + assert collector.books_genre.get('Гордость и предубеждение и зомби') == 'Ужасы' + + def test_get_books_with_specific_genre_know_genre_get_book_done(self): + collector = BooksCollector() + + collector.add_new_book('Гордость и предубеждение и зомби') + collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') + + books_with_genre = collector.get_books_with_specific_genre('Ужасы') + assert 'Гордость и предубеждение и зомби' in books_with_genre + + def test_get_books_for_children_add_two_books_one_book_added(self): + collector = BooksCollector() + + collector.add_new_book('Гордость и предубеждение и зомби') + collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') + collector.add_new_book('Что делать, если ваш кот хочет вас убить') + collector.set_book_genre('Что делать, если ваш кот хочет вас убить', 'Комедии') + + books_for_children = collector.get_books_for_children() + assert len(books_for_children) == 1 and 'Что делать, если ваш кот хочет вас убить' in books_for_children + + def test_add_book_in_favorites_add_one_book_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_delete_one_book_book_deleted(self): + collector = BooksCollector() + collector.add_new_book('Гордость и предубеждение и зомби') + collector.add_book_in_favorites('Гордость и предубеждение и зомби') + collector.delete_book_from_favorites('Гордость и предубеждение и зомби') + + assert collector.get_list_of_favorites_books() == [] + + +@pytest.mark.parametrize('name', ['Я','Он','Дети завтрашнего дня','Дети завтрашнего дняПиксельпутеводитель','Компания с ограниченной ответственностью']) +def test_positive_input(name): + collector = BooksCollector() + collector.add_new_book(name) + + assert len(collector.get_books_genre()) == 1 - # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file From e251f50dc849145145d79787aef874cc561c6f7c Mon Sep 17 00:00:00 2001 From: Alexander Tokmakov Date: Mon, 23 Mar 2026 10:09:43 +0500 Subject: [PATCH 2/4] add test get_books_genre --- tests.py | 8 ++++++++ 1 file changed, 8 insertions(+) diff --git a/tests.py b/tests.py index a94799b..aca85a7 100644 --- a/tests.py +++ b/tests.py @@ -63,6 +63,14 @@ def test_delete_book_from_favorites_delete_one_book_book_deleted(self): assert collector.get_list_of_favorites_books() == [] + def test_get_books_genre_get_list_books_genre_list_geted(self): + collector = BooksCollector() + + collector.add_new_book('Гордость и предубеждение и зомби') + collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') + assert collector.get_books_genre() == {'Гордость и предубеждение и зомби': 'Ужасы'} + + @pytest.mark.parametrize('name', ['Я','Он','Дети завтрашнего дня','Дети завтрашнего дняПиксельпутеводитель','Компания с ограниченной ответственностью']) def test_positive_input(name): From e9a67e26c5b21129aa66eb1d7d002532444a5530 Mon Sep 17 00:00:00 2001 From: Alexander Tokmakov Date: Mon, 23 Mar 2026 10:21:21 +0500 Subject: [PATCH 3/4] changed test_add_new_book_positive_input_name_with_different_number_characters --- tests.py | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/tests.py b/tests.py index aca85a7..06df941 100644 --- a/tests.py +++ b/tests.py @@ -72,10 +72,10 @@ def test_get_books_genre_get_list_books_genre_list_geted(self): -@pytest.mark.parametrize('name', ['Я','Он','Дети завтрашнего дня','Дети завтрашнего дняПиксельпутеводитель','Компания с ограниченной ответственностью']) -def test_positive_input(name): - collector = BooksCollector() - collector.add_new_book(name) + @pytest.mark.parametrize('name', ['Я','Он','Дети завтрашнего дня','Дети завтрашнего дняПиксельпутеводитель','Компания с ограниченной ответственностью']) + def test_add_new_book_positive_input_name_with_different_number_characters(self, name): + collector = BooksCollector() + collector.add_new_book(name) - assert len(collector.get_books_genre()) == 1 + assert len(collector.get_books_genre()) == 1 From 423bd5d7d5d91a7954c3efda31c18cf081887343 Mon Sep 17 00:00:00 2001 From: Alexander Tokmakov Date: Mon, 23 Mar 2026 10:57:05 +0500 Subject: [PATCH 4/4] added fixture --- .gitignore | 2 ++ tests.py | 33 +++++++++------------------------ 2 files changed, 11 insertions(+), 24 deletions(-) diff --git a/.gitignore b/.gitignore index 141c039..6a958a1 100644 --- a/.gitignore +++ b/.gitignore @@ -1,3 +1,5 @@ .vscode/ __pycache__/main.cpython-314.pyc __pycache__/tests.cpython-314-pytest-9.0.2.pyc +__pycache__/conftest.cpython-314-pytest-9.0.2.pyc +conftest.py diff --git a/tests.py b/tests.py index 06df941..3e2287e 100644 --- a/tests.py +++ b/tests.py @@ -3,43 +3,33 @@ class TestBooksCollector: - def test_add_new_book_add_two_books_books_added(self): - collector = BooksCollector() - + def test_add_new_book_add_two_books_books_added(self, collector): collector.add_new_book('Гордость и предубеждение и зомби') collector.add_new_book('Что делать, если ваш кот хочет вас убить') assert len(collector.get_books_genre()) == 2 - def test_set_book_genre_set_know_genre_book_added(self): - collector = BooksCollector() - + def test_set_book_genre_set_know_genre_book_added(self, collector): collector.add_new_book('Гордость и предубеждение и зомби') collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') assert collector.get_books_genre() == {'Гордость и предубеждение и зомби': 'Ужасы'} - def test_get_book_genre_know_book_get_genre_done(self): - collector = BooksCollector() - + def test_get_book_genre_know_book_get_genre_done(self, collector): collector.add_new_book('Гордость и предубеждение и зомби') collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') collector.get_book_genre('Гордость и предубеждение и зомби') assert collector.books_genre.get('Гордость и предубеждение и зомби') == 'Ужасы' - def test_get_books_with_specific_genre_know_genre_get_book_done(self): - collector = BooksCollector() - + def test_get_books_with_specific_genre_know_genre_get_book_done(self, collector): collector.add_new_book('Гордость и предубеждение и зомби') collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') books_with_genre = collector.get_books_with_specific_genre('Ужасы') assert 'Гордость и предубеждение и зомби' in books_with_genre - def test_get_books_for_children_add_two_books_one_book_added(self): - collector = BooksCollector() - + def test_get_books_for_children_add_two_books_one_book_added(self, collector): collector.add_new_book('Гордость и предубеждение и зомби') collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') collector.add_new_book('Что делать, если ваш кот хочет вас убить') @@ -48,24 +38,20 @@ def test_get_books_for_children_add_two_books_one_book_added(self): books_for_children = collector.get_books_for_children() assert len(books_for_children) == 1 and 'Что делать, если ваш кот хочет вас убить' in books_for_children - def test_add_book_in_favorites_add_one_book_book_added(self): - collector = BooksCollector() + def test_add_book_in_favorites_add_one_book_book_added(self, collector): collector.add_new_book('Гордость и предубеждение и зомби') collector.add_book_in_favorites('Гордость и предубеждение и зомби') assert 'Гордость и предубеждение и зомби' in collector.get_list_of_favorites_books() - def test_delete_book_from_favorites_delete_one_book_book_deleted(self): - collector = BooksCollector() + def test_delete_book_from_favorites_delete_one_book_book_deleted(self, collector): collector.add_new_book('Гордость и предубеждение и зомби') collector.add_book_in_favorites('Гордость и предубеждение и зомби') collector.delete_book_from_favorites('Гордость и предубеждение и зомби') assert collector.get_list_of_favorites_books() == [] - def test_get_books_genre_get_list_books_genre_list_geted(self): - collector = BooksCollector() - + def test_get_books_genre_get_list_books_genre_list_geted(self, collector): collector.add_new_book('Гордость и предубеждение и зомби') collector.set_book_genre('Гордость и предубеждение и зомби', 'Ужасы') assert collector.get_books_genre() == {'Гордость и предубеждение и зомби': 'Ужасы'} @@ -73,8 +59,7 @@ def test_get_books_genre_get_list_books_genre_list_geted(self): @pytest.mark.parametrize('name', ['Я','Он','Дети завтрашнего дня','Дети завтрашнего дняПиксельпутеводитель','Компания с ограниченной ответственностью']) - def test_add_new_book_positive_input_name_with_different_number_characters(self, name): - collector = BooksCollector() + def test_add_new_book_positive_input_name_with_different_number_characters(self, collector, name): collector.add_new_book(name) assert len(collector.get_books_genre()) == 1