Skip to content

Conversation

@guesswho812
Copy link

Добавил юнит-тесты с 100% покрытием:

  • 21 тест с полным покрытием основных классов
  • Фикстуры вынесены в conftest.py
  • Использованы моки и параметризация (ТЗ)
  • Нет дублирования кода, каждый тест проверяет один метод
  • Добавлен .gitignore для чистоты репозитория

def bun():
"""Фикстура для создания булочки"""
from bun import Bun
return Bun("Краторная булочка", 100.0)

Choose a reason for hiding this comment

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

Можно лучше здесь и далее: лучше выносить тестовые данные во внешний модуль (например, data). Это позволит облегчить их поддержку

Comment on lines +13 to +33
@pytest.fixture
def burger():
"""Создает новый бургер для каждого теста"""
return Burger()

@pytest.fixture
def mock_bun():
"""Создает мок булочки"""
mock = Mock()
mock.get_price.return_value = 100
mock.get_name.return_value = "test bun"
return mock

@pytest.fixture
def mock_ingredient():
"""Создает мок ингредиента"""
mock = Mock()
mock.get_price.return_value = 50
mock.get_name.return_value = "test ingredient"
mock.get_type.return_value = INGREDIENT_TYPE_SAUCE
return mock

Choose a reason for hiding this comment

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

Необходимо исправить здесь и далее: фикстуры стоит вынести к остальным в модуль conftest

Choose a reason for hiding this comment

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

А тут фикстуры все еще в теле теста, дублируют те что уже есть в conftest. От этих можно избавиться

Comment on lines 88 to 90
assert "test bun" in receipt
assert "test sauce" in receipt
assert "Price: 250" in receipt # 2*100 + 50 No newline at end of file

Choose a reason for hiding this comment

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

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

Comment on lines 28 to 30
assert ingredient.get_type() == INGREDIENT_TYPE_SAUCE
assert ingredient.get_name() == "hot sauce"
assert ingredient.get_price() == 100.0

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