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 подскажет развёрнутый ответ в реальном времени.