Conversation
tests.py
Outdated
| def test_add_new_book_add_two_books(self): | ||
| # создаем экземпляр (объект) класса BooksCollector | ||
| collector = BooksCollector() | ||
| @pytest.fixture # создаем функцию для создания тестовых объектов в начале тестов после класса |
There was a problem hiding this comment.
Нужно исправить: перенести фикстуру в файл conftest
tests.py
Outdated
| @pytest.mark.parametrize('genre', ['Фантастика', 'Ужасы', 'Детективы', 'Мультфильмы', 'Комедии']) | ||
| # с помощью @pytest.mark.parametrize тест будет выполнен для каждого жанра из списка | ||
| def test_init_all_genre_exist(self, collector, genre): | ||
| assert genre in collector.genre # проверяем жанр на наличие в списке genre |
There was a problem hiding this comment.
Нужно исправить: мы тестируем не атрибуты экземпляров класса, а методы приложения. Необходимо добавить шаги в которых будут использованы методы и проверить результат.
|
|
||
| def test_get_book_genre_return_genre_set(self, collector): | ||
| assert collector.get_books_genre('Новая книга ужасов') == 'Ужасы' | ||
| # здесь и далее замена создания объекта (экземпляра класса) на использование фикстуры collector через параметр |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
tests.py
Outdated
| @pytest.mark.parametrize('invalid_genre', ['Комиксы', ' ', '666', None]) | ||
| def test_init_all_genre_is_invalid(self, collector, invalid_genre): | ||
| collector.set_book_genre('Книга', invalid_genre) | ||
| assert collector.get_books_genre('Книга') != invalid_genre |
There was a problem hiding this comment.
есть конкретное ожидание чему жанр должен быть равен в данном тесте, нужно сделать проверку более точной
There was a problem hiding this comment.
Предыдущая проверка направлена на проверку ожидаемого жанра из списка
There was a problem hiding this comment.
нет, предыдущая проверка не проверят этого. В случае попытки присвоить невалидный жанр, жанр не должен назначится, т.е. будет например равен None или пустым
tests.py
Outdated
| # с помощью @pytest.mark.parametrize тест будет выполнен для каждого жанра из списка | ||
| def test_init_all_genre_exist(self, genre): | ||
| collector = BooksCollector() # создаем объект класса BooksCollector | ||
| genre_list=collector.get_book_genre() # вызываем метод, возвращающий список жанров |
There was a problem hiding this comment.
во-первых сейчас ошибка и не верно вызывается метод
TypeError: BooksCollector.get_book_genre() missing 1 required positional argument: 'name'
Во-вторых мы не должны тестировать атрибуты экземпляра класса - список жанров закодирован внутри приложения, его не нужно проверять, он может меняться.Нам нужно проверять методы приложения - добавление книг и что ожидаем после, назначение жанров книгам и т.п.
tests.py
Outdated
| @pytest.mark.parametrize('invalid_genre', ['Комиксы', ' ', '666', None]) | ||
| def test_init_all_genre_is_invalid(self, invalid_genre): | ||
| collector = BooksCollector() # создаем объект класса BooksCollector | ||
| collector.set_book_genre('Книга', invalid_genre) |
There was a problem hiding this comment.
нужно исправить: прежде чем назначить жанр нужно добавить книгу в приложение.
tests.py
Outdated
| @pytest.mark.parametrize('invalid_genre', ['Комиксы', ' ', '666', None]) | ||
| def test_init_all_genre_is_invalid(self, collector, invalid_genre): | ||
| collector.set_book_genre('Книга', invalid_genre) | ||
| assert collector.get_books_genre('Книга') != invalid_genre |
There was a problem hiding this comment.
нет, предыдущая проверка не проверят этого. В случае попытки присвоить невалидный жанр, жанр не должен назначится, т.е. будет например равен None или пустым
tests.py
Outdated
|
|
||
| def test_get_books_with_specific_genre_get_book_by_genre(self): | ||
| collector = BooksCollector() # создаем объект класса BooksCollector | ||
| assert len(collector.get_books_with_specific_genre('Ужасы')) == 1 |
There was a problem hiding this comment.
нужно исправить: в этом и следующем тесте - почему ожидаем что есть книги с этими жанрами? их не добавляли.
tests.py
Outdated
|
|
||
| def test_get_books_for_children_get_book_without_age_rating_possible(self): | ||
| collector = BooksCollector() # создаем объект класса BooksCollector | ||
| assert len(collector.get_books_for_children()) == 1 |
There was a problem hiding this comment.
нужно исправить: тут нужно сначала добавить книги и назначить им детские жанры, потом добавить книги с недетскими жанрами и проверить что список верный
| # 7.1 Проверка добавления книги в Избранное | ||
|
|
||
| def test_add_book_in_favorites_add_new_book_possible(self, collector): | ||
| collector.add_book_in_favorites('Новая книга ужасов') |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
|
|
||
| def test_add_book_in_favorites_add_new_book_possible(self, collector): | ||
| collector.add_book_in_favorites('Новая книга ужасов') | ||
| assert len(collector.get_list_of_favorites_books()) == 1 |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
|
|
||
| def test_add_book_in_favorites_add_one_book_two_times_not_possible(self): | ||
| collector = BooksCollector() # создаем объект класса BooksCollector | ||
| collector.add_book_in_favorites('Новая книга ужасов') |
| collector.add_new_book('Гордость и предубеждение и зомби') | ||
| collector.add_new_book('Что делать, если ваш кот хочет вас убить') | ||
| def test_delete_book_from_favorites_delete_book_possible(self): | ||
| collector = BooksCollector() # создаем объект класса BooksCollector |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
| # напиши свои тесты ниже | ||
| # чтобы тесты были независимыми в каждом из них создавай отдельный экземпляр класса BooksCollector() No newline at end of file | ||
| def test_get_list_of_favorites_books_get_list_of_favorites_books_successful(self): | ||
| collector = BooksCollector() # создаем объект класса BooksCollector |
This comment was marked as outdated.
This comment was marked as outdated.
Sorry, something went wrong.
tests.py
Outdated
| # 2 Проверка жанра книги | ||
| # 2.1 Проверка валидного жанра книги | ||
|
|
||
| @pytest.mark.parametrize('genre', ['Фантастика', 'Ужасы', 'Детективы', 'Мультфильмы', 'Комедии']) |
There was a problem hiding this comment.
Нужно исправить: В данном задании для параметризации лучше всего подходят граничные значения в классе длины имени - отдельно невалидные значения и отдельным тестом - ГЗ для валидных
| # 1.1 Проверка добавления одной новой книги | ||
| def test_add_new_book_plus_one_book(self): # в имени функции test_ название тестируемого метода указание что тестируем | ||
| # self показывает, что этот метод является методом класса | ||
| collector = BooksCollector() # создаем объект класса BooksCollector |
There was a problem hiding this comment.
оптимально было бы сделать фикстуру для создания экземпляра класса и использовать во всех тестах
No description provided.