2010-11-14 4 views
5

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

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

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

+0

http://docs.djangoproject.com/ru/dev/topics/testing/?from=olddocs#testing-master-slave-configurations http://docs.djangoproject.com/ru/dev/topics/testing /? с = olddocs # мульти-БД-поддержка – Thomas

ответ

1

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

это мой маршрутизатор по умолчанию (Джанго 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 

и в settings.py:

DATABASE_ROUTERS = ['otherapp.dbrouter.CustomDbRouter', 'project.dbrouter.DefaultRouter'] 
Смежные вопросы