diff --git a/README.md b/README.md index 1cc701d..cb45133 100644 --- a/README.md +++ b/README.md @@ -1 +1,14 @@ -# qa_python \ No newline at end of file +# qa_python +test_add_new_book_add_two_books - метод add_new_book добавляет две книги в словарь books_genre +test_add_new_book_name_longer_than40_not_added - метод add_new_book не добавляет книги в словарь books_genre с названием больше 40 символов (41 и 50) +test_set_book_genre_existing_book_genre_set - метод set_book_genre добавляет жанр существующей книге +test_get_book_genre_non_existing_book_none - метод get_book_genre не отображает отсутсвующие в списке books_genre книги +test_get_books_with_specific_genre_books_with_set_genre_returned - метод get_books_with_specific_genre возвращается список книг, по заданному жанру +test_get_books_genre_added_books_returned - метод get_books_genre возвращает books_genre с добавленными книгами +test_get_books_for_children_adult_genre_book_excluded - метод get_books_for_children не возвращает книгу с взрослым рейтингом +test_add_book_in_favorites_existing_book_added - метод add_book_in_favorites добавляет книгу в список избранного +test_delete_book_from_favorites_existing_book_deleted - метод delete_book_from_favorites удаляет присутствующую в списке избранного книгу +test_get_list_of_favorites_books_favorites_returned - метод get_list_of_favorites возвращает список избранных книг +test_add_new_book_existing_book_not_added - метод add_new_book не добавляет дубликат книги в словарь books_genre +test_add_new_book_name_is_40_symbols_added - метод add_new_book добавляет книгу с названием длиной в 40 символов в словарь books_genre +test_add_book_in_favorites_non_existing_book_not_added - метод add_book_in_favorites не добавляет в избранное книгу, которая не была добавлена в коллекцию diff --git a/tests.py b/tests.py index 383385e..e306b5d 100644 --- a/tests.py +++ b/tests.py @@ -1,4 +1,5 @@ from main import BooksCollector +import pytest # класс TestBooksCollector объединяет набор тестов, которыми мы покрываем наше приложение BooksCollector # обязательно указывать префикс Test @@ -17,8 +18,93 @@ def test_add_new_book_add_two_books(self): collector.add_new_book('Что делать, если ваш кот хочет вас убить') # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + # словарь books_genre, который нам возвращает метод get_books_genre, имеет длину 2 + assert len(collector.get_books_genre()) == 2 # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() + def test_add_new_book_name_is_40_symbols_added(self): + collector = BooksCollector() + book_name = 'А' * 40 + collector.add_new_book(book_name) + assert len(collector.get_books_genre()) == 1 + + @pytest.mark.parametrize('book_name',['А' * 41,'Б' * 50]) + def test_add_new_book_name_longer_than40_not_added(self, book_name): + collector = BooksCollector() + collector.add_new_book(book_name) + assert len(collector.get_books_genre()) == 0 + + def test_add_new_book_existing_book_not_added(self): + collector = BooksCollector() + collector.add_new_book('Дюна') + collector.add_new_book('Дюна') + assert len(collector.get_books_genre()) == 1 + + def test_set_book_genre_existing_book_genre_set(self): + collector = BooksCollector() + collector.add_new_book('Извилистый путь') + collector.set_book_genre('Извилистый путь', 'Комедии') + assert collector.get_book_genre('Извилистый путь') == 'Комедии' + + def test_get_book_genre_non_existing_book_none(self): + collector = BooksCollector() + assert collector.get_book_genre('Голос между') is None + + def test_get_books_with_specific_genre_books_with_set_genre_returned(self): + collector = BooksCollector() + collector.add_new_book('Split Fiction') + collector.add_new_book('Звездные войны') + collector.add_new_book('Песнь льда и пламени') + collector.set_book_genre('Split Fiction','Фантастика') + collector.set_book_genre('Звездные войны', 'Фантастика') + collector.set_book_genre('Песнь льда и пламени', 'Ужасы') + books = collector.get_books_with_specific_genre('Фантастика') + assert set (books) == {'Split Fiction', 'Звездные войны'} + + def test_get_books_genre_added_books_returned(self): + collector = BooksCollector() + collector.add_new_book('Изгой') + collector.add_new_book('Достать ножи') + collector.set_book_genre('Изгой', 'Фантастика') + collector.set_book_genre('Достать ножи', 'Детективы') + books_genre = collector.get_books_genre() + expected = { + 'Изгой': 'Фантастика', + 'Достать ножи': 'Детективы' + } + assert books_genre == expected + + def test_get_books_for_children_adult_genre_book_excluded(self): + collector = BooksCollector() + collector.add_new_book('Тетрадь смерти') + collector.set_book_genre('Тетрадь смерти', 'Ужасы') + books_for_children = collector.get_books_for_children() + assert 'Тетрадь смерти' not in books_for_children + + def test_add_book_in_favorites_existing_book_added(self): + collector = BooksCollector() + collector.add_new_book('Властелин колец') + collector.add_book_in_favorites('Властелин колец') + assert 'Властелин колец' in collector.get_list_of_favorites_books() + + def test_add_book_in_favorites_non_existing_book_not_added(self): + collector = BooksCollector() + collector.add_book_in_favorites('Ветра зимы') + assert 'Ветра зимы' not in collector.get_list_of_favorites_books() + + def test_delete_book_from_favorites_existing_book_deleted(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_favorites_returned(self): + collector = BooksCollector() + collector.add_new_book('Шерлок Холмс') + collector.add_new_book('Тени Орды') + collector.add_book_in_favorites('Шерлок Холмс') + collector.add_book_in_favorites('Тени Орды') + favorites = collector.get_list_of_favorites_books() + assert set(favorites) == {'Шерлок Холмс', 'Тени Орды'} \ No newline at end of file