Подтвердить что ты не робот

Выполнение тестов django с использованием sqlite

Я использую Postgres для производства и разработки, но я бы хотел использовать sqlite для запуска некоторых тестов. Я не вижу простого способа настроить один движок для тестов, а другой - для dev/production. Я что-то пропустил?

4b9b3361

Ответ 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 и отдельно разделить конфигурации для каждого.