Добавление Юнит тестов для проверки класса BooksCollector, добавление описание тестов в READMDE#20
Добавление Юнит тестов для проверки класса BooksCollector, добавление описание тестов в READMDE#20SmllPlug wants to merge 8 commits intoyandex-praktikum:developfrom
Conversation
… описание тестов в READMDE
There was a problem hiding this comment.
Нужно исправить: из финального проекта нужно удалить все файлы и папки, которые не относятся к решению задачи
| @pytest.fixture | ||
| def collector_with_books(): | ||
| collector = BooksCollector() | ||
| for name, genre in BOOK_WITH_GENRE: |
This comment was marked as resolved.
This comment was marked as resolved.
Sorry, something went wrong.
test.py
Outdated
| # затем, что тестируем add_two_books - добавление двух книг | ||
| def test_add_new_book_add_two_books(self): | ||
| # создаем экземпляр (объект) класса BooksCollector | ||
| collector = BooksCollector() |
There was a problem hiding this comment.
нужно исправить везде: т.к. есть фикстура для создания экземпляра нужно всегда использовать её
test.py
Outdated
| # Получаем список книг для детей | ||
| book_for_children = set(collector.get_books_for_children()) | ||
| # Проверяем, что в списке книг для детей только книги без возрастного рейтинга | ||
| assert book_for_children == {"Цветы для Элджернона", "Приключения Винни", "Горе от ума"} |
There was a problem hiding this comment.
нужно исправить: брать названия книг также из переменных. таким образом мы обеспечим стабильность и более лёгкое поддержание тестов
test.py
Outdated
|
|
||
| # Тест на проверку получения списка книг, подходящих для детей | ||
| def test_get_books_for_children_only_children_genres(self, collector_with_books): | ||
| collector = collector_with_books |
There was a problem hiding this comment.
Нужно исправить: Здесь и везде. Фикстура - это объект, который можно рассматривать, как набор условий необходимых тесту для выполнения. То есть она не должна заменять шаги теста
В этом тесте нет шагов которые используют методы приложения
test.py
Outdated
| assert book_for_children == {"Цветы для Элджернона", "Приключения Винни", "Горе от ума"} | ||
|
|
||
| # Тест на проверку получения списка книг, подходящих для детей, когда все книги имеют возрастной рейтинг | ||
| @pytest.mark.parametrize("adult_genre", ['Ужасы', 'Детективы']) |
There was a problem hiding this comment.
Можно лучше: для параметризации используют данные которые отличаются друг от друга, например принадлежат к разным классам эквивалентости (либо тестируют границы одного класса) и имеют одинаковый ОР. Твой список - это по сути один и тот же класс, нам не нужно проверять его много раз на самом деле. В данном задании для параметризации лучше всего подходят граничные значения в классе длины имени - отдельно невалидные значения и отдельным тестом - ГЗ для валидных
conftest.py
Outdated
| # Фикстура для создания экземпляра BooksCollector с предзаполненными книгами и жанрами | ||
| @pytest.fixture | ||
| def collector_with_books(): | ||
| collector = BooksCollector() |
There was a problem hiding this comment.
Этот код дублируется, у нас уже есть фикстура которая создает экземпляр, и нужно её переиспользовать
test.py
Outdated
| # Берем названия книг через переменные, чтобы тест был стабильным | ||
| expected_books = { | ||
| name for name, genre in BOOK_WITH_GENRE | ||
| if genre not in ['Ужасы', 'Детективы'] |
There was a problem hiding this comment.
Нужно исправить: условий в тестах быть не может, тест всегда однозначен.
There was a problem hiding this comment.
нужно доработать словари чтобы их возможно было использовать в тестах без условий
test.py
Outdated
| # Тест на проверку получения жанра книги с фикстурой | ||
| def test_get_book_genre_book_exist(self, collector_with_books): | ||
| # Используем фикстуру с книгами и жанрами | ||
| assert collector_with_books.get_book_genre("Оно") == "Ужасы" |
There was a problem hiding this comment.
Нужно исправить: не стоит хранить одно и то же тестовое значение отдельно - если что-то было создано в фикстуре, то тут стоит вызвать это значение, а не дублировать его. Иначе тесты станут неподдерживаемыми - легко изменить что то в фикстуре (например) и не заметить что и в тесте тоже нужно поменять.
No description provided.