2010-11-14 14 views
5

Estoy usando django 1.2, y tuve que configurar una segunda base de datos en mi proyecto . Tan pronto como configuro la segunda conexión y el enrutador en mi proyecto , todos mis casos de prueba que ni siquiera se refieren a esa segunda base de datos comienzan a fallar. La ejecución de la aplicación funciona bien, syncdb funciona bien, es solo la prueba (prueba de unidad) que tengo problemas con .¿El marco de prueba de django admite varias bases de datos?

Me parece que la segunda base de datos nunca se crea, e incluso si la creo manualmente como (test_mydbname) mantiene en error.

¿Es esto compatible?

+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 # multi-database-support – Thomas

Respuesta

1

Tuve que agregar un DefaultRouter, entonces mis pruebas comenzaron a funcionar nuevamente. Parece que en el escenario de prueba, django no conoce una base de datos "predeterminada". Todas las informaciones, incluyendo el orden de creación db prueba: https://docs.djangoproject.com/en/dev/topics/testing/advanced/#tests-and-multiple-databases

esta es mi router por defecto (Django 1.7, no tan seguro de allow_relation y allow_migrate, aunque

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 

y en settings.py:

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