Простое решение - откатить транзакцию после теста (например, в tearDown()
). Таким образом, тесты могут вносить все изменения, которые им нравятся, но они не изменят базу данных (не забудьте отключить autoCommit
для соединения).
Есть недостаток: если тест не пройден, вы не можете заглянуть в базу данных, чтобы выяснить, почему. Поэтому большинство моих тестов очищают базу данных перед запуском, и они используют autoCommit, чтобы я мог видеть последнее состояние, в котором произошел сбой, выполнить фиксированный SQL-запрос к данным и т. Д.