diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..aa6cef2 --- /dev/null +++ b/.gitignore @@ -0,0 +1,3 @@ +__pycache__/ +*.pyc +.idea/ diff --git a/README.md b/README.md index 1cc701d..bd5acbe 100644 --- a/README.md +++ b/README.md @@ -1 +1,26 @@ -# qa_python \ No newline at end of file +# В проекте реализованы тесты для класса BooksCollector. + +# Покрыты методы: + +# + +# \- add\_new\_book - обычный + длинное имя + параметризация + +# \- set\_book\_genre - корректный / некорректный + +# \- get\_book\_genre + +# \- get\_books\_with\_specific\_genre + +# \- get\_books\_genre + +# \- get\_books\_for\_children + +# \- add\_book\_in\_favorites + +# \- delete\_book\_from\_favorites + +# \- get\_list\_of\_favorites\_books + +# Используется параметризация для проверки добавления книг. + diff --git a/__pycache__/main.cpython-38.pyc b/__pycache__/main.cpython-38.pyc deleted file mode 100644 index 5786eeb..0000000 Binary files a/__pycache__/main.cpython-38.pyc and /dev/null differ diff --git a/__pycache__/test.cpython-38-pytest-7.1.2.pyc b/__pycache__/test.cpython-38-pytest-7.1.2.pyc deleted file mode 100644 index b2898a8..0000000 Binary files a/__pycache__/test.cpython-38-pytest-7.1.2.pyc and /dev/null differ diff --git a/conftest.py b/conftest.py new file mode 100644 index 0000000..b02f1c6 --- /dev/null +++ b/conftest.py @@ -0,0 +1,7 @@ +import pytest +from main import BooksCollector + + +@pytest.fixture +def collector(): + return BooksCollector() diff --git a/tests.py b/tests.py index 383385e..fae5599 100644 --- a/tests.py +++ b/tests.py @@ -1,24 +1,99 @@ +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 - collector = BooksCollector() + def test_add_new_book_add_two_books(self, collector): + collector.add_new_book('Книга 1') + collector.add_new_book('Книга 2') + + assert len(collector.books_genre) == 2 + + def test_add_new_book_name_more_40_symbols_not_added(self, collector): + long_name = 'А' * 41 + + collector.add_new_book(long_name) + + assert len(collector.books_genre) == 0 + + def test_set_book_genre_success(self, collector): + collector.books_genre['Оно'] = '' + + collector.set_book_genre('Оно', 'Ужасы') + + assert collector.books_genre['Оно'] == 'Ужасы' + + def test_get_book_genre(self, collector): + collector.books_genre['Оно'] = 'Ужасы' + + result = collector.get_book_genre('Оно') + + assert result == 'Ужасы' + + def test_get_books_genre(self, collector): + collector.books_genre = { + 'Оно': 'Ужасы', + 'Дюна': 'Фантастика' + } + + result = collector.get_books_genre() + + assert result == { + 'Оно': 'Ужасы', + 'Дюна': 'Фантастика' + } + + def test_get_books_with_specific_genre(self, collector): + collector.books_genre = { + 'Книга 1': 'Фантастика', + 'Книга 2': 'Ужасы' + } + + result = collector.get_books_with_specific_genre('Фантастика') + + assert result == ['Книга 1'] + + def test_get_books_for_children(self, collector): + collector.books_genre = { + 'Детская': 'Комедии', + 'Страшная': 'Ужасы' + } + + result = collector.get_books_for_children() + + assert result == ['Детская'] + + def test_add_book_in_favorites(self, collector): + collector.books_genre['Оно'] = '' + + collector.add_book_in_favorites('Оно') + + assert collector.favorites == ['Оно'] + + def test_get_list_of_favorites_books(self, collector): + collector.favorites = ['Оно', 'Дюна'] + + result = collector.get_list_of_favorites_books() + + assert result == ['Оно', 'Дюна'] + + def test_delete_book_from_favorites(self, collector): + collector.favorites = ['Оно'] + + collector.delete_book_from_favorites('Оно') - # добавляем две книги - collector.add_new_book('Гордость и предубеждение и зомби') - collector.add_new_book('Что делать, если ваш кот хочет вас убить') + assert collector.favorites == [] - # проверяем, что добавилось именно две - # словарь books_rating, который нам возвращает метод get_books_rating, имеет длину 2 - assert len(collector.get_books_rating()) == 2 + @pytest.mark.parametrize( + 'book_name', + [ + 'Книга', + 'Очень интересная книга', + 'Python для всех' + ] + ) + def test_add_new_book_parametrized(self, collector, book_name): + collector.add_new_book(book_name) - # напиши свои тесты ниже - # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() \ No newline at end of file + assert book_name in collector.books_genre