Ответ
Фикстура (fixture) — это предопределенное состояние тестовой среды или набор данных, которые подготавливаются перед выполнением теста и очищаются после. Её цель — обеспечить изоляцию, повторяемость и надежность тестов, устраняя дублирование кода для настройки и очистки.
Пример фикстуры в pytest:
import pytest
@pytest.fixture
def test_user():
# Setup: создаем тестового пользователя в базе данных
user = User.create(username="test_user", email="test@example.com")
yield user # передаем объект в тест
# Teardown: очищаем данные после теста
user.delete()
def test_user_authentication(test_user):
# Фикстура `test_user` автоматически передается в тест
auth_result = authenticate(test_user.username, "password123")
assert auth_result is True
Основные типы фикстур:
- Функциональные (
@pytest.fixture) — выполняются для каждой тестовой функции. - Модульные (
scope="module") — выполняются один раз для модуля с тестами. - Сессионные (
scope="session") — выполняются один раз за всю сессию запуска тестов.
Применение: подготовка БД, мокирование внешних сервисов, создание временных файлов, настройка веб-драйвера для UI-тестов.