Что означает параметр indirect в pytest.mark.parametrize?

indirect передаёт параметр в одноимённую фикстуру через request.param. Тест получает результат фикстуры, а не исходное значение из parametrize.

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

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

indirect передаёт параметр в одноимённую фикстуру через request.param. Тест получает результат фикстуры, а не исходное значение из parametrize.

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

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

indirect передаёт параметр в одноимённую фикстуру через request.param. Тест получает результат фикстуры, а не исходное значение из parametrize.

Например, параметр может описывать конфигурацию клиента, а фикстура — создавать клиент во время выполнения теста:

import pytest

@pytest.fixture
def role(request):
    return {"name": request.param}

@pytest.mark.parametrize("role", ["reader", "editor"], indirect=True)
def test_role(role):
    assert role["name"] in {"reader", "editor"}

При нескольких аргументах indirect=["role"] делает косвенным только выбранный параметр. Это удобно для подготовки ресурсов, но не заменяет корректный teardown фикстуры.

Источник: docs.pytest.org.

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

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

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

Подробнее