TGViewer
Библиотека питониста | Python, Django, Flask Библиотека питониста | Python, Django, Flask @pyproglib · 37.2K subscribers
Post #7255 4.29K
🧪 Pytest Fixtures: как сделать тесты чистыми, переиспользуемыми и модульными

Фикстуры в pytest — это мощный инструмент для организации тестовой архитектуры.

Они позволяют:
✔️ Не дублировать код: создаёте данные один раз и используете их в нескольких тестах.
✔️ Переиспользовать данные между модулями: через conftest.py фикстуры становятся доступны во всех тестах.
✔️ Параметризовать тесты: params запускает один тест с разными входными данными.
✔️ Автоматически подключать фикстуры: autouse=True делает их доступными без явного указания в тестах.

Пример простой фикстуры для пользователя:
import pytest
from dataclasses import dataclass

@dataclass
class User:
name: str
email: str

@pytest.fixture()
def user_fixture():
return User(name="Patrick", email="myemail@gmail.com")

def test_valid_user(user_fixture):
assert validate_user(user_fixture).is_valid

def test_valid_email(user_fixture):
assert validate_email(user_fixture).is_valid


Советы по организации фикстур:
✔️ Для маленьких проектов фикстуры можно держать в conftest.py.
✔️ Для больших проектов удобно создавать отдельную папку fixtures/ и импортировать их в conftest.py.
✔️ Используйте scope (function, module, session) для контроля времени жизни фикстуры.
✔️ Параметр name помогает давать понятные имена фикстурам.

Как используют фикстуры известные проекты:
🔥 Pydantic — держат фикстуры в тестовых модулях, высокая когезия.
🔥 Streamlit — комбинируют unit-тесты и e2e-тесты с фикстурами в conftest.py.
🔥 Hypothesis — генерирует случайные данные для property-based testing.

➡️ Чуть подробнее в полезной статье

🐸 Библиотека питониста

#буст
  • 👍 9
  • ❤ 6
  • 🔥 4
More from @pyproglib
  1. Oct 7, 2026🎓 С Днём учителя! Учиться никогда не поздно — особенно когда технологии меняются быстрее,…
  2. Oct 3, 2026📚Напоминаем про наш полный курс «Самоучитель по Python для начинающих» Мы написали и собр…
  3. Oct 2, 2026🎹 Что делать после ChatGPT? Следующий шаг — AI-агенты. Они не просто отвечают на запросы,…
  4. Sep 30, 2026🔥 Последний день для разработчиков AI уже пишет код. Теперь важнее научиться встраивать е…
  5. Sep 25, 2026🔥 Курс «ИИ для разработчиков» уже стартовал И мы решили открыть первое занятие всем — мож…
  6. Sep 20, 2026👻 94% токенов уходят не на код Анализ запусков показал: основная часть токенов уходит на…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →