diff --git a/README.md b/README.md index 1cc701d..286080d 100644 --- a/README.md +++ b/README.md @@ -1 +1,15 @@ -# qa_python \ No newline at end of file +# qa_python +Тесты для BooksCollector + +test_initial_state - проверка первоначального состояния +test_add_new_book_correct_add_book_successful_add - проверка добавления книги в словарь без жанра +test_add_new_book_incorrect_add_book_unsuccessful_add - проверка добавления книги в словарь +test_set_book_genre_correct_genre_success - проверка на успешную установку жанра из списка +test_set_book_genre_incorrect_genre_unsuccess - проверку жанр не входящий в список не устанавливается +test_get_book_genre - получение книг по жанрам +test_get_books_with_specific_genre - проверка выведения списка книг с определенным жанром +test_get_books_genre - проверка получения списка книг +test_get_books_for_children - проверка возврата детских книг +test_add_book_in_favorites - проверка добавления книги в избранное +test_delete_book_from_favorites - проверка удаления книги из избранного +test_get_list_of_favorites_books - проверка получения списка избранных книг \ No newline at end of file diff --git a/tests.py b/tests.py index 383385e..5484ccc 100644 --- a/tests.py +++ b/tests.py @@ -1,24 +1,89 @@ +import pytest 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 + def test_initial_state(self): + collector = BooksCollector() + assert collector.get_books_genre() == {} and collector.get_list_of_favorites_books() == [] + + def test_add_new_book_correct_add_book_successful_add(self): + collector = BooksCollector() + collector.add_new_book('Азбука') + assert collector.get_book_genre('Азбука') == '' + + @pytest.mark.parametrize("name, expected_count", [ + ('Азбука', 1), + ('', 0), + ('Азбука' * 10, 0) + ]) + def test_add_new_book_incorrect_add_book_unsuccessful_add(self, name, expected_count): + collector = BooksCollector() + collector.add_new_book(name) + assert len(collector.get_books_genre()) == expected_count + + def test_set_book_genre_correct_genre_success(self): + collector = BooksCollector() + collector.add_new_book('Азбука') + collector.set_book_genre('Азбука', 'Ужасы') + assert collector.books_genre['Азбука'] == 'Ужасы' + + def test_set_book_genre_incorrect_genre_unsuccess(self): + collector = BooksCollector() + collector.add_new_book('Азбука') + collector.set_book_genre('Азбука', 'FFFFFF') + assert collector.books_genre['Азбука'] == '' + + def test_get_book_genre(self): collector = BooksCollector() + collector.add_new_book('Азбука') + collector.set_book_genre('Азбука', 'Ужасы') + assert collector.get_book_genre('Азбука') == 'Ужасы' - # добавляем две книги - collector.add_new_book('Гордость и предубеждение и зомби') - collector.add_new_book('Что делать, если ваш кот хочет вас убить') + def test_get_books_with_specific_genre(self): + collector = BooksCollector() + books = ['Азбука', 'Алгебра', 'Маленький принц'] + for book in books: + collector.add_new_book(book) + collector.set_book_genre(book, 'Ужасы') + + collector.add_new_book('Ну погоди') + collector.set_book_genre('Ну погоди', 'Мультфильмы') + + assert collector.get_books_with_specific_genre('Ужасы') == books + + def test_get_books_genre(self): + collector = BooksCollector() + collector.add_new_book('Азбука') + assert collector.get_books_genre() == {'Азбука': ''} + + def test_get_books_for_children(self): + collector = BooksCollector() + collector.add_new_book('Детская') + collector.add_new_book('Взрослая') + collector.set_book_genre('Детская', 'Фантастика') + collector.set_book_genre('Взрослая', 'Ужасы') - # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + assert collector.get_books_for_children() == ['Детская'] - # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + def test_add_book_in_favorites(self): + collector = BooksCollector() + collector.add_new_book('Азбука') + collector.add_book_in_favorites('Азбука') + assert collector.get_list_of_favorites_books() == ['Азбука'] + + def test_delete_book_from_favorites(self): + collector = BooksCollector() + collector.add_new_book('Азбука') + collector.add_book_in_favorites('Азбука') + collector.delete_book_from_favorites('Азбука') + assert collector.get_list_of_favorites_books() == [] + + def test_get_list_of_favorites_books(self): + collector = BooksCollector() + collector.add_new_book('Азбука') + collector.add_new_book('Алгебра') + collector.add_book_in_favorites('Азбука') + collector.add_book_in_favorites('Алгебра') + assert collector.get_list_of_favorites_books() == ['Азбука', 'Алгебра'] \ No newline at end of file