Поддерживаются ли несколько баз данных средой тестирования django? - PullRequest
5 голосов
/ 15 ноября 2010

Я использую django 1.2, и мне пришлось настроить вторую базу данных в моем проекте.Как только я установил второе соединение и маршрутизатор в моем проекте, все мои тестовые примеры, которые даже не ссылаются на эту вторую базу данных, начинают терпеть неудачу.Запуск приложения работает нормально, syncdb работает отлично, это просто тестирование (модульное тестирование), с которым у меня проблемы.

Мне кажется, что вторая база данных никогда не создается, и даже если я создаю ее вручную как (test_mydbname), она продолжает отказывать.

Поддерживается ли это?

1 Ответ

1 голос
/ 22 мая 2015

Мне пришлось добавить DefaultRouter, затем мои тесты снова начали работать.Похоже, в тестовом сценарии django не знает о базе данных «по умолчанию».Вся информация, включая порядок создания тестовой базы данных: https://docs.djangoproject.com/en/dev/topics/testing/advanced/#tests-and-multiple-databases

, это мой маршрутизатор по умолчанию (django 1.7, не очень уверен насчет allow_relation и allow_migrate, хотя

class DefaultRouter(object):
    """
    A router for the default db. add last in settings
    """

    db_label = 'default'

    def db_for_read(self, model, **hints):
        return self.db_label

    def db_for_write(self, model, **hints):
        return self.db_label

    def allow_relation(self, obj1, obj2, **hints):
        return True

    def allow_migrate(self, db, app_label, model=None, **hints):
        return True

и в настройках.py:

DATABASE_ROUTERS = ['otherapp.dbrouter.CustomDbRouter', 'project.dbrouter.DefaultRouter']
...