-
Notifications
You must be signed in to change notification settings - Fork 21
Добавление Юнит тестов для проверки класса BooksCollector, добавление описание тестов в READMDE #20
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
base: develop
Are you sure you want to change the base?
Conversation
… описание тестов в READMDE
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нужно исправить: из финального проекта нужно удалить все файлы и папки, которые не относятся к решению задачи
| @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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
нужно исправить везде: т.к. есть фикстура для создания экземпляра нужно всегда использовать её
test.py
Outdated
| # Получаем список книг для детей | ||
| book_for_children = set(collector.get_books_for_children()) | ||
| # Проверяем, что в списке книг для детей только книги без возрастного рейтинга | ||
| assert book_for_children == {"Цветы для Элджернона", "Приключения Винни", "Горе от ума"} |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
нужно исправить: брать названия книг также из переменных. таким образом мы обеспечим стабильность и более лёгкое поддержание тестов
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нужно исправить: Здесь и везде. Фикстура - это объект, который можно рассматривать, как набор условий необходимых тесту для выполнения. То есть она не должна заменять шаги теста
В этом тесте нет шагов которые используют методы приложения
test.py
Outdated
| assert book_for_children == {"Цветы для Элджернона", "Приключения Винни", "Горе от ума"} | ||
|
|
||
| # Тест на проверку получения списка книг, подходящих для детей, когда все книги имеют возрастной рейтинг | ||
| @pytest.mark.parametrize("adult_genre", ['Ужасы', 'Детективы']) |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Можно лучше: для параметризации используют данные которые отличаются друг от друга, например принадлежат к разным классам эквивалентости (либо тестируют границы одного класса) и имеют одинаковый ОР. Твой список - это по сути один и тот же класс, нам не нужно проверять его много раз на самом деле. В данном задании для параметризации лучше всего подходят граничные значения в классе длины имени - отдельно невалидные значения и отдельным тестом - ГЗ для валидных
conftest.py
Outdated
| # Фикстура для создания экземпляра BooksCollector с предзаполненными книгами и жанрами | ||
| @pytest.fixture | ||
| def collector_with_books(): | ||
| collector = BooksCollector() |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Этот код дублируется, у нас уже есть фикстура которая создает экземпляр, и нужно её переиспользовать
test.py
Outdated
| # Берем названия книг через переменные, чтобы тест был стабильным | ||
| expected_books = { | ||
| name for name, genre in BOOK_WITH_GENRE | ||
| if genre not in ['Ужасы', 'Детективы'] |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нужно исправить: условий в тестах быть не может, тест всегда однозначен.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
нужно доработать словари чтобы их возможно было использовать в тестах без условий
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.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Нужно исправить: не стоит хранить одно и то же тестовое значение отдельно - если что-то было создано в фикстуре, то тут стоит вызвать это значение, а не дублировать его. Иначе тесты станут неподдерживаемыми - легко изменить что то в фикстуре (например) и не заметить что и в тесте тоже нужно поменять.
No description provided.