Фикстура создаёт соединение, передаёт его тесту через yield и закрывает в finally. Обычное падение теста не отменяет teardown; ошибка подключения до yield даёт ошибку setup, и тело теста не выполняется.
Как реализовать коннектор к базе данных в Python? Как передаётся соединение в тесты через фикстуры? Будет ли выполнен teardown, если тест упадёт? Какой статус будет у теста, если подключение к БД не удалось?
Фикстура создаёт соединение, передаёт его тесту через yield и закрывает в finally. Обычное падение теста не отменяет teardown; ошибка подключения до yield даёт ошибку setup, и тело теста не выполняется.
Короткий ответ
Что ответить на собеседовании
Подробный разбор
Ответ с пояснениями
Фикстура создаёт соединение, передаёт его тесту через yield и закрывает в finally. Обычное падение теста не отменяет teardown; ошибка подключения до yield даёт ошибку setup, и тело теста не выполняется.
Схема с драйвером выбранной БД:
import pytest
@pytest.fixture
def db():
conn = connect_test_database()
try:
yield conn
finally:
conn.close()
connect_test_database — проектная функция подключения к изолированной тестовой БД. Если подготовка состоит из нескольких ресурсов, регистрируйте очистку каждого сразу после создания. Аварийное убийство процесса не гарантирует teardown. Обычное исключение подключения отображается как ERROR подготовки, а не как успешный или выполненный тест.