Я использую Postgres для производства и разработки, но я бы хотел использовать sqlite для запуска некоторых тестов. Я не вижу простого способа настроить один движок для тестов, а другой - для dev/production. Я что-то пропустил?
Выполнение тестов django с использованием sqlite
Ответ 1
Добавьте в свои настройки следующие строки:
import sys
if 'test' in sys.argv or 'test_coverage' in sys.argv: #Covers regular testing and django-coverage
DATABASES['default']['ENGINE'] = 'django.db.backends.sqlite3'
Убедитесь, что перед вами установлен фактический параметр базы данных.
Ответ 2
Это не прямой ответ, но да, вам не хватает одной большой проблемы - тестирование приложения Postgres на SQLite сложно - они , поэтому разные. Я предлагаю вам создать ram-диск (например, используя tmpfs) и создать там тестовую базу Postgres. Это будет не так быстро, как SQLite, но, возможно, на порядок быстрее, чем обычная база данных Postgres, хранящаяся на жестком диске.
Ответ 3
Вы можете попробовать настройку, аналогичную тому, что предлагается здесь Zachary Voase: http://blog.zacharyvoase.com/2010/02/03/django-project-conventions/
(Весь пост полезен, но прокрутите вниз до раздела "Настройки" для наиболее актуальной здесь части.)
Стратегия Zach состоит в том, чтобы создать папку настроек и пометить ее как пакет python с помощью файла __init__.py
. Затем у вас может быть отдельный подмодуль для каждого из типов развертывания, структурированный следующим образом:
settings/
|-- __init__.py # Empty; makes this a Python package
|-- common.py # All the common settings are defined here
|-- development.py # Settings for development
|-- production.py # Settings for production
|-- staging.py # Settings for staging
Следуя этой концепции, вы можете настроить развертывание для postgres и отдельное развертывание для sqlite и отдельно разделить конфигурации для каждого.