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 # каждый тест запускается с каждым paramconftest.py— fixtures shared между тестами в директории и поддиректориях;autouse=True— применить ко всем тестам автоматически;- fixture может ссылаться на другие fixtures.
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.