При одинаковом 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 и из тестового файла запускаются для каждого теста, причем порядок их запуска следующий:
- Сначала выполняются фикстуры из conftest.py, так как они имеют более глобальную область видимости и импортируются раньше.
- Затем выполняются фикстуры, определённые непосредственно в тестовом файле.
Это означает, что если в conftest.py и в тестовом файле есть фикстуры с одинаковыми именами, то фикстуры из тестового файла могут переопределять или дополнять поведение.
Такой порядок позволяет задавать общие настройки и подготовку в conftest.py, а более специфичные — в тестовом файле.