Как сохранить тестовые данные после завершения тестов Django?

Я использую Django 1.8 и docs, чтобы использовать --keepdb для сохранения тестовой базы данных.

Я делаю это, и база данных есть, но каждый раз, когда я вижу ее, она пуста и в ней нет данных.

Есть ли способ сохранить это, чтобы я мог видеть, что там?

Ответ 1

Весь ваш код работает в транзакциях базы данных, которые возвращаются в конце каждого теста.

Из Django docs:

Вот пример, какие подклассы из django.test.TestCase, который является подклассом unittest.TestCase, который запускает каждый тест внутри транзакции для обеспечения изоляции:

Эта "изоляция" означает, что все, что вы делаете внутри теста, будет откат до начала следующего теста.

Вместо этого вы хотите использовать класс Python unittest.TestCase.

Еще одна цитата из документов Django:

Использование unittest.TestCase позволяет избежать затрат на запуск каждого теста в транзакции и очистку базы данных, но если ваши тесты взаимодействуют с базой данных, их поведение будет зависеть от того, какой порядок выполнения выполняется им. Это может привести к единичным тестам, которые проходят при запуске изолированно, но сбой при запуске в пакете.

Пока вы можете гарантировать, что ваши тесты не будут сжимать друг друга данными, вы можете безопасно использовать этот класс вместо тестового примера Django.