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/README.md b/README.md index 1cc701d..0c79a9f 100644 --- a/README.md +++ b/README.md @@ -1 +1,17 @@ -# qa_python \ No newline at end of file +# 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/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 383385e..6a17572 100644 --- a/tests.py +++ b/tests.py @@ -1,24 +1,67 @@ -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() + 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, 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_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, 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, 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, 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() - # добавляем две книги - collector.add_new_book('Гордость и предубеждение и зомби') - collector.add_new_book('Что делать, если ваш кот хочет вас убить') + # Тест метода 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() - # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + # Тест метода 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 == [] - # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + # Тест метода 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