Skip to content

Conversation

@SmllPlug
Copy link
Collaborator

No description provided.

Copy link

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.

test.py Outdated
# затем, что тестируем add_two_books - добавление двух книг
def test_add_new_book_add_two_books(self):
# создаем экземпляр (объект) класса BooksCollector
collector = BooksCollector()
Copy link

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 == {"Цветы для Элджернона", "Приключения Винни", "Горе от ума"}
Copy link

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
Copy link

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", ['Ужасы', 'Детективы'])
Copy link

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()
Copy link

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 ['Ужасы', 'Детективы']
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно исправить: условий в тестах быть не может, тест всегда однозначен.

Copy link

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("Оно") == "Ужасы"
Copy link

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Нужно исправить: не стоит хранить одно и то же тестовое значение отдельно - если что-то было создано в фикстуре, то тут стоит вызвать это значение, а не дублировать его. Иначе тесты станут неподдерживаемыми - легко изменить что то в фикстуре (например) и не заметить что и в тесте тоже нужно поменять.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants