2010-11-14 43 views
5

J'utilise django 1.2, et j'ai dû configurer une deuxième base de données sur mon projet . Dès que je configure la deuxième connexion et le routeur sur mon projet , tous mes cas de test qui ne font même pas référence à cette deuxième base de données commencent à échouer. Exécution de l'application fonctionne très bien, syncdb fonctionne très bien, est juste le test (tests unitaires) que j'ai des problèmes avec .Plusieurs bases de données sont-elles prises en charge par le framework de test django?

Il me semble que la deuxième base de données n'est jamais créée, et même si je la crée manuellement en tant que (test_mydbname), elle reste défaillante.

Est-ce pris en charge?

+0

http://docs.djangoproject.com/fr/dev/topics/testing/?from=olddocs#testing-master-slave-configurations http://docs.djangoproject.com/fr/dev/topics/testing /? from = olddocs # support de bases de données multiples – Thomas

Répondre

1

J'ai dû ajouter un DefaultRouter, puis mes tests ont recommencé. On dirait que dans le scénario de test, django ne connaît pas de base de données "par défaut". Toutes les infos, y compris le test db ordre de création: https://docs.djangoproject.com/en/dev/topics/testing/advanced/#tests-and-multiple-databases

c'est mon routeur par défaut (django 1.7, pas si sûr allow_relation et allow_migrate, bien que

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 

et à settings.py:

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