Каждый тест начинался с одинаковых «создай объект» — дублирование setup душило читаемость. Узнав фикстуры, понял: тестовые данные выносятся, а тест принимает готовый объект просто параметром. Код тестов похудел, а удовольствие громкое.
Нейтрально: фикстура — фабрика готового состояния для теста. Удобно и переиспользуемо по смоукам.
import pytest
@pytest.fixture
def habit():
return {"name": "бег", "minutes": 20}
def test_habit_total(habit): # фикстура приезжает сама
assert habit["minutes"] > 0
def test_habit_strip(habit):
assert habit["name"].strip() == habit["name"]
Вечер рефакторинга тестов принёс радость мастера: меньше повторений, меньше ошибок копипаста. Понял силу слова «готовое состояние», которое тест берёт из одной точки.