From 632b8241fc01f6e80ae0bdfa4b6af0ad55d0ff6e Mon Sep 17 00:00:00 2001 From: VAILE Date: Sun, 28 Jan 2024 18:48:28 +0300 Subject: [PATCH 1/2] added 19 autotest. --- tests.py | 189 +++++++++++++++++++++++++++++++++++++++++++++++++++++-- 1 file changed, 183 insertions(+), 6 deletions(-) diff --git a/tests.py b/tests.py index 383385e..3031d16 100644 --- a/tests.py +++ b/tests.py @@ -1,4 +1,8 @@ +import random + from main import BooksCollector +import pytest + # класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector # обязательно указывать префикс Test @@ -8,17 +12,190 @@ class TestBooksCollector: # обязательно указывать префикс test_ # дальше идет название метода, который тестируем add_new_book_ # затем, что тестируем add_two_books - добавление двух книг - def test_add_new_book_add_two_books(self): + @pytest.mark.parametrize( + "first_book,second_book", + [ + ('Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить'), + ('Что делать, если ваш кот хочет вас убить', 'Гордость и предубеждение и зомби') + ] + ) + def test_add_new_book_add_two_books( + self, + first_book: str, + second_book: str + ): # создаем экземпляр (объект) класса BooksCollector collector = BooksCollector() # добавляем две книги - collector.add_new_book('Гордость и предубеждение и зомби') - collector.add_new_book('Что делать, если ваш кот хочет вас убить') + collector.add_new_book(first_book) + collector.add_new_book(second_book) # проверяем, что добавилось именно две # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + assert len(collector.get_books_genre()) == 2 + + def test_add_new_book_dont_add_book_twice( + self, + ): + collector = BooksCollector() + collector.add_new_book('Гордость и предубеждение и зомби') + collector.add_new_book('Гордость и предубеждение и зомби') + + assert len(collector.get_books_genre()) == 1 + + def test_add_new_book_dont_add_book_with_empty_name( + self, + ): + collector = BooksCollector() + collector.add_new_book('') + + assert len(collector.get_books_genre()) == 0 + + def test_add_new_book_dont_add_book_with_too_long_name( + self, + ): + collector = BooksCollector() + collector.add_new_book('01234567890123456789012345678901234567891') + + assert len(collector.get_books_genre()) == 0 + + def test_get_book_genre_get_genre_to_added_book( + self, + ): + first_book = 'Гордость и предубеждение и зомби' + collector = BooksCollector() + collector.add_new_book(first_book) + + assert collector.get_book_genre(name=first_book) == '' + + def test_get_book_genre_get_genre_to_not_added_book( + self, + ): + first_book = 'Гордость и предубеждение и зомби' + collector = BooksCollector() + + assert collector.get_book_genre(name=first_book) is None + + def test_set_book_genre_set_random_genre_one_book( + self, + ): + first_book = 'Гордость и предубеждение и зомби' + collector = BooksCollector() + collector.add_new_book(first_book) + gener = collector.genre[random.randint(0, 4)] + collector.set_book_genre(name=first_book, genre=gener) + + assert collector.get_book_genre(name=first_book) == gener + + @pytest.mark.parametrize( + "first_book,second_book,genre", + [ + ('Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить', 'Ужасы'), + ('Что делать, если ваш кот хочет вас убить', 'Гордость и предубеждение и зомби', 'Фантастика') + ] + ) + def test_set_book_genre_set_genre_two_books( + self, + first_book: str, + second_book: str, + genre: str + ): + collector = BooksCollector() + collector.add_new_book(first_book) + collector.add_new_book(second_book) + collector.set_book_genre(name=first_book, genre=genre) + collector.set_book_genre(name=second_book, genre=genre) + + assert len(collector.get_books_genre().values()) == 2 + + def test_set_book_genre_set_genre_to_not_added_book( + self, + ): + first_book = 'Гордость и предубеждение и зомби' + collector = BooksCollector() + gener = collector.genre[random.randint(0, 4)] + collector.set_book_genre(name=first_book, genre=gener) + + assert collector.get_book_genre(name=first_book) is None + + @pytest.mark.parametrize( + "first_book,second_book,genre", + [ + ('Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить', 'Ужасы'), + ('Что делать, если ваш кот хочет вас убить', 'Гордость и предубеждение и зомби', 'Фантастика') + ] + ) + def test_get_books_with_specific_genre_two_books_with_one_genre( + self, + first_book: str, + second_book: str, + genre: str + ): + collector = BooksCollector() + collector.add_new_book(first_book) + collector.add_new_book(second_book) + collector.set_book_genre(name=first_book, genre=genre) + collector.set_book_genre(name=second_book, genre=genre) + + assert len(collector.get_books_with_specific_genre(genre)) == 2 + + def test_get_books_with_specific_genre_book_with_not_added_genre( + self, + ): + collector = BooksCollector() + collector.add_new_book('Гордость и предубеждение и зомби') + collector.set_book_genre(name='Гордость и предубеждение и зомби', genre='Ужасы') + + assert len(collector.get_books_with_specific_genre('Фантастика')) == 0 + + @pytest.mark.parametrize( + "first_book,second_book,first_genre,second_genre", + [ + ('Гордость и предубеждение и зомби', 'Что делать, если ваш кот хочет вас убить', 'Ужасы', 'Фантастика'), + ('Что делать, если ваш кот хочет вас убить', 'Гордость и предубеждение и зомби', 'Фантастика', 'Ужасы') + ] + ) + def test_get_books_for_children_two_books_with_one_adult_genre( + self, + first_book: str, + second_book: str, + first_genre: str, + second_genre: str + ): + collector = BooksCollector() + collector.add_new_book(first_book) + collector.add_new_book(second_book) + collector.set_book_genre(name=first_book, genre=first_genre) + collector.set_book_genre(name=second_book, genre=second_genre) + + assert len(collector.get_books_for_children()) == 1 + + def test_add_book_in_favorites_add_one_book( + self, + ): + collector = BooksCollector() + collector.add_new_book('Гордость и предубеждение и зомби') + collector.add_book_in_favorites('Гордость и предубеждение и зомби') + + assert len(collector.get_list_of_favorites_books()) == 1 + + def test_add_book_in_favorites_dont_add_one_book_twice( + self, + ): + collector = BooksCollector() + collector.add_new_book('Гордость и предубеждение и зомби') + collector.add_book_in_favorites('Гордость и предубеждение и зомби') + collector.add_book_in_favorites('Гордость и предубеждение и зомби') + + assert len(collector.get_list_of_favorites_books()) == 1 + + def test_delete_book_from_favorites_delete_one_book( + self, + ): + collector = BooksCollector() + collector.add_new_book('Гордость и предубеждение и зомби') + collector.add_book_in_favorites('Гордость и предубеждение и зомби') + collector.delete_book_from_favorites('Гордость и предубеждение и зомби') - # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + assert len(collector.get_list_of_favorites_books()) == 0 From b244095b978d5333eabcb9446162376120ae13ce Mon Sep 17 00:00:00 2001 From: VAILE Date: Sun, 28 Jan 2024 19:11:38 +0300 Subject: [PATCH 2/2] =?UTF-8?q?=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D0=BB?= =?UTF-8?q?=201=20=D1=82=D0=B5=D1=81=D1=82=20=D1=81=20=D0=BE=D0=B6=D0=B8?= =?UTF-8?q?=D0=B4=D0=B0=D0=B5=D0=BC=D1=8B=D0=BC=20=D0=BF=D0=B0=D0=B4=D0=B5?= =?UTF-8?q?=D0=BD=D0=B8=D0=B5=D0=BC,=20=D0=B4=D0=BE=D0=B1=D0=B0=D0=B2?= =?UTF-8?q?=D0=B8=D0=BB=20=D0=BE=D0=BF=D0=B8=D1=81=D0=B0=D0=BD=D0=B8=D0=B5?= =?UTF-8?q?=20=D0=B2=20readme?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 20 +++++++++++++++++++- tests.py | 9 +++++++++ 2 files changed, 28 insertions(+), 1 deletion(-) diff --git a/README.md b/README.md index 1cc701d..400b97a 100644 --- a/README.md +++ b/README.md @@ -1 +1,19 @@ -# qa_python \ No newline at end of file +# qa_python + +Были реализованы: +test_add_new_book_add_two_books - проверка на возможность добавления двух книг +test_add_new_book_dont_add_book_twice - проверка на то, что книга с одним названием не добавится дважды +test_add_new_book_dont_add_book_with_empty_name - проверка на выставленную валидацию, не добавляет книгу с пустым именем +test_add_new_book_dont_add_book_with_space_in_name - проверка на добавление имени с пробелом в названии, нкжна доработка +test_add_new_book_dont_add_book_with_too_long_name - проверка на выставленную валидацию, не добавляет книгу с длинным названием в 41 символ и более +test_get_book_genre_get_genre_to_added_book - получаем жанр к книге, которой не добавили жанр +test_get_book_genre_get_genre_to_not_added_book - проверяем что не добавит жанр к не добавленной книге +test_set_book_genre_set_random_genre_one_book - добавялем рандомный жанр к книге +test_set_book_genre_set_genre_two_books - добавялем одинаковый жанр к разным книгам, проверяем жанр +test_set_book_genre_set_genre_to_not_added_book - получаем жанр у не добавленной книги +test_get_books_with_specific_genre_two_books_with_one_genre - получаем названия книг по жанру +test_get_books_with_specific_genre_book_with_not_added_genre - проверяем вывод если не добавить жанр книге +test_get_books_for_children_two_books_with_one_adult_genre - добавляем книгу с взрослым жанром и детским жанром, проверяем вывод 1 книги +test_add_book_in_favorites_add_one_book - проверяем добавление книги в любимые +test_add_book_in_favorites_dont_add_one_book_twice - проверяем что книга дважды не добавляется в любимые +test_delete_book_from_favorites_delete_one_book - проверяем что книга удаляется из списка любимых \ No newline at end of file diff --git a/tests.py b/tests.py index 3031d16..44998de 100644 --- a/tests.py +++ b/tests.py @@ -52,6 +52,15 @@ def test_add_new_book_dont_add_book_with_empty_name( assert len(collector.get_books_genre()) == 0 + @pytest.mark.xfail + def test_add_new_book_dont_add_book_with_space_in_name( + self, + ): + collector = BooksCollector() + collector.add_new_book(' ') + + assert len(collector.get_books_genre()) == 0 + def test_add_new_book_dont_add_book_with_too_long_name( self, ):