2010-11-14 12 views
5

Używam django 1.2, i musiałem skonfigurować drugą bazę danych w moim projekcie . Jak tylko ustawię drugie połączenie i router w moim projekcie , wszystkie moje przypadki testowe, które nawet nie odnoszą się do tej drugiej bazy danych zaczynają się nie udać. Uruchamianie aplikacji działa dobrze, syncdb działa dobrze, to tylko testowanie (testowanie jednostkowe), z którymi mam problemy z .Czy wiele baz danych jest obsługiwanych przez framework testowy django?

Wydaje mi się, że druga baza danych nigdy nie jest tworzona, , a nawet jeśli utworzę ją ręcznie jako (test_mydbname), to spowoduje to niepowodzenie .

Czy to jest obsługiwane?

+0

http://docs.djangoproject.com/en/dev/topics/testing/?from=olddocs#testing-master-slave-configurations http://docs.djangoproject.com/en/dev/topics/testing /? from = olddocs # obsługa wielu baz danych – Thomas

Odpowiedz

1

Musiałem dodać DefaultRouter, wtedy moje testy zaczęły działać ponownie. Wygląda na to, że w scenariuszu testowym django nie wie o "domyślnej" bazie danych. Wszystkie informacje, w tym celu tworzenia testu DB: https://docs.djangoproject.com/en/dev/topics/testing/advanced/#tests-and-multiple-databases

To jest mój router domyślny (django 1.7, nie tak pewny o allow_relation i allow_migrate, choć

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 

iw settings.py:

DATABASE_ROUTERS = ['otherapp.dbrouter.CustomDbRouter', 'project.dbrouter.DefaultRouter'] 
Powiązane problemy