Как сказать Django сохранить мою тестовую базу данных?

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

в случае, если я не изменил ни одну из моих моделей, я мог бы сэкономить уйму времени, если бы Django не пытался создать и уничтожить всю базу данных, а вместо этого сохранил ее для следующего раза. Еще лучше, было бы здорово, если бы тестовый Бегун был способен возможность видеть, какие модели изменились и только заменяют те, которые до запуска тестов.

Я бы предпочел не подкласс тестового бегуна сам, но это то, что я собираюсь сделать, если я не найду решение в ближайшее время. есть ли что-то подобное уже существует?

4 ответов


в django1.8 добавлен новый параметр для manage.py test команда --keepdb

./manage.py test --keepdb

django-test-utils обеспечивает постоянную функциональность тестового бегуна базы данных, http://django-test-utils.readthedocs.org/en/latest/keep_database_runner.html


вы пробовали использовать базу данных SQLite в памяти для тестов? Это намного быстрее, чем использовать дисковую базу данных.


Я использую Djang-нос. Если вы установите env var REUSE_DB=1, он не будет уничтожать БД после запуска тестов и повторно использовать ту же БД для следующего запуска. Всякий раз, когда ваша схема изменяется, просто установите REUSE_DB=0 и выполните один "полный" запуск. После этого сбросьте его до 1, и вы хорошо пойдете.

https://github.com/django-nose/django-nose