Короткий ответ Каждый тест оборачивают в транзакцию (или savepoint) на реальном соединении с тестовой БД, а после теста транзакцию откатывают вместо того, чтобы пересоздавать схему или удалять данные вручную. Как это работает подробнее Фикстура открывает соединение, начинает транзакцию и создаёт сессию ORM, привязанную к этому соединению; все операции теста выполняются в её рамках. После теста fixture делает rollback — все изменения, включая вставки и обновления, отменяются, а схема и исходные данные (если были) остаются нетронутыми для следующего теста. Пример кода Что использовать на практике Практика. Такой подход значительно быстрее, чем пересоздание всей схемы БД между тестами, и хорошо работает с большинством тестов, но ломается, если тестируемый код сам управляет транзакциями (commit/rollback) — вложенные savepoint нужно настраивать аккуратно, либо использовать отдельный engine для такого кода. Подводные камни Риск. Не учитывать, что некоторые операции (например, DDL в части СУБД, или явный commit внут