Что такое фикстура в контексте тестирования?

«Что такое фикстура в контексте тестирования?» — вопрос из категории Фреймворки тестирования, который задают на 45% собеседований AQA / Automation. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Фикстура (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-тестов.