Mediumpytest

Что такое pytest fixtures?

1Постановка

Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.

2Решение

Fixture — функция, готовящая test data/state. Инжектируется в тест по имени аргумента. Мощнее setUp/tearDown: композиция, scope control, параметризация.

import pytest

@pytest.fixture
def sample_data():
    return [1, 2, 3]

def test_sum(sample_data):
    assert sum(sample_data) == 6

# scope (lifetime): function/class/module/package/session
@pytest.fixture(scope='session')
def db():
    conn = connect()
    yield conn          # finalization через yield
    conn.close()        # после теста, даже при exception

# параметризация fixture
@pytest.fixture(params=[1, 2, 3])
def num(request):
    return request.param   # каждый тест запускается с каждым param
  • conftest.py — fixtures shared между тестами в директории и поддиректориях;
  • autouse=True — применить ко всем тестам автоматически;
  • fixture может ссылаться на другие fixtures.

3Как отвечать

  • Сначала уточните условия и ограничения, покажите аналитическое мышление.
  • Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
  • Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡

На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.