В каком порядке выполнятся фикстуры?

При одинаковом scope="function" фикстуры из conftest.py и из тестового файла запускаются для каждого теста, причем порядок их запуска следующий:

Короткий ответ

Что ответить на собеседовании

При одинаковом scope="function" фикстуры из conftest.py и из тестового файла запускаются для каждого теста, причем порядок их запуска следующий:

Подробный разбор

Ответ с пояснениями

Условие

В каком порядке выполнятся фикстуры?

import pytest

@pytest.fixture(scope="session") def setup_api_logs(): print("A")

@pytest.fixture(scope="module") def db_container(): print("B")

@pytest.fixture(scope="function", autouse=True) def api_client(db_container): print("C")

@pytest.fixture(scope="function") def auth_token(): print("D")

def test_create_order(auth_token): assert True

Ответ

При одинаковом scope="function" фикстуры из conftest.py и из тестового файла запускаются для каждого теста, причем порядок их запуска следующий:

  1. Сначала выполняются фикстуры из conftest.py, так как они имеют более глобальную область видимости и импортируются раньше.
  2. Затем выполняются фикстуры, определённые непосредственно в тестовом файле.

Это означает, что если в conftest.py и в тестовом файле есть фикстуры с одинаковыми именами, то фикстуры из тестового файла могут переопределять или дополнять поведение.

Такой порядок позволяет задавать общие настройки и подготовку в conftest.py, а более специфичные — в тестовом файле.

ИИ-помощник для собеседований

Хочешь уверенно проходить собеседования?

Попробуй ИИ-помощник для собеседований: слышит вас и собеседника, анализирует экран, подсказывает ответы в реальном времени, работает без VPN и не попадает в захват экрана.

Подробнее