diff --git a/README.md b/README.md index 1cc701d..163e192 100644 --- a/README.md +++ b/README.md @@ -1 +1,33 @@ -# qa_python \ No newline at end of file +# BooksCollector + +### Тесты: + +1. **test_add_new_book_title_length_limit** + Проверка допустимого количества символов в названии книги. + +2. **test_set_book_genre_set_invalid_genre** + Проверка, что нельзя установить недопустимый жанр + +3. **test_add_book_empty_genre** + Проверка, что у добавленной книги отсутсвует жанр + +4. **test_get_books_with_specific_genre** + Проверка, что можно вывести книги выбранного жанра + +5. **test_get_books_genre** + Проверка, что можно вывести текущий словарь + +6. **test_get_books_for_children** + Проверка, что можно вывести список детских книг + +7. **test_get_books_for_children_except_adult** + Проверка, что в списке детских книг отсутствуют жанры с возрастным рейтингом + +8. **test_add_book_in_favorites** + Проверка, что можно добавить книгу в список избранного + +9. **test_delete_book_from_favorites** + Проверка, что можно удалить книгу из списка избранного + +10. **test_get_list_of_favorites_books** + Проверка, что можно вывести список избранных книг \ No newline at end of file diff --git a/tests.py b/tests.py index 383385e..f633980 100644 --- a/tests.py +++ b/tests.py @@ -1,4 +1,5 @@ from main import BooksCollector +import pytest # класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector # обязательно указывать префикс Test @@ -21,4 +22,82 @@ def test_add_new_book_add_two_books(self): assert len(collector.get_books_rating()) == 2 # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() + + # Параметризованный тест на проверку допустимого количества символов в названии + @pytest.mark.parametrize('name, approve', [ + ('A', True), + ('B' * 40, True), + ('', False), + ('C' * 41, False) + ]) + def test_add_new_book_title_length_limit(self, name, approve): + collector = BooksCollector() + collector.add_new_book(name) + + assert (name in collector.get_books_genre()) == approve + + # Нельзя установить недопустимый жанр + def test_set_book_genre_set_invalid_genre(self): + collector = BooksCollector() + collector.add_new_book('Остров сокровищ') + collector.set_book_genre('Остров сокровищ', 'Приключения') + assert collector.get_book_genre('Остров сокровищ') == '' + + # У добавленной книги отсутсвует жанр + def test_add_book_empty_genre(self): + collector = BooksCollector() + collector.add_new_book('Остров сокровищ') + assert collector.get_book_genre('Остров сокровищ') == '' + + # Можно вывести книги выбранного жанра + def test_get_books_with_specific_genre(self): + collector = BooksCollector() + collector.add_new_book('Остров сокровищ') + collector.set_book_genre('Остров сокровищ', 'Мультфильмы') + assert collector.get_books_with_specific_genre('Мультфильмы') == ['Остров сокровищ'] + + # Можно вывести текущий словарь + 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.set_book_genre('Остров сокровищ', 'Мультфильмы') + assert 'Остров сокровищ' in collector.get_books_for_children() + + #В списке детских книг отсутствуют жанры с возрастным рейтингом + def test_get_books_for_children_except_adult(self): + collector = BooksCollector() + collector.add_new_book('Оно') + collector.set_book_genre('Оно', 'Ужасы') + assert 'Оно' not in collector.get_books_for_children() + + #Можно добавить книгу в избранное + def test_add_book_in_favorites(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(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(self): + collector = BooksCollector() + collector.add_new_book('Остров сокровищ') + collector.add_book_in_favorites('Остров сокровищ') + assert collector.get_list_of_favorites_books() == ['Остров сокровищ'] + + + \ No newline at end of file