Mediumtesting
Что такое testing в Python (conftest, marks)?
1Постановка
Разберём, что от вас хотят в этом вопросе и как к нему подступиться на собеседовании.
2Решение
conftest.py — общие fixtures для тестов в директории и поддиректориях (без явного импорта). pytest marks — метки для группировки/фильтрации тестов.
# tests/conftest.py
import pytest
@pytest.fixture
def app():
return create_app()
@pytest.fixture
def client(app):
return app.test_client()
# tests/test_api.py
@pytest.mark.slow
def test_big_query(client):
r = client.get('/heavy')
assert r.status_code == 200
@pytest.mark.parametrize('a, b, expected', [
(1, 2, 3), (4, 5, 9),
])
def test_add(a, b, expected):
assert a + b == expected- Запуск с фильтром:
pytest -m "not slow"; - Встроенные marks:
skip,skipif,xfail; - Кастомные нужно зарегистрировать в
pyproject.toml/pytest.ini; - Coverage:
pytest --cov=app --cov-report=html(pytest-cov).
3Как отвечать
- Сначала уточните условия и ограничения, покажите аналитическое мышление.
- Рассуждайте вслух — интервьюеру важен ход мысли, а не только финальный ответ.
- Оцените сложность по времени и памяти (Big-O), если это алгоритмический вопрос.
💡
На реальном собеседовании Alffert подскажет развёрнутый ответ в реальном времени.