indirect передаёт параметр в одноимённую фикстуру через request.param. Тест получает результат фикстуры, а не исходное значение из parametrize.
Что означает параметр indirect в pytest.mark.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.