2010-11-03 7 views
11

Tengo dos bases de datos que usa mi sitio y tengo una aplicación que usa ambas. Necesito escribir un TestCase que cargue accesorios para ambas bases de datos. Utilizo un enrutador DB, que funciona bien en producción, pero en el marco de prueba, Django insiste en usar la base de datos 'predeterminada' para todos los dispositivos, incluso para los modelos que especifican la otra base de datos. ¿Cómo le digo a Django que ejecute un dispositivo contra otra base de datos?django - especificar la base de datos para las instalaciones de TestCase

class VerifierTestCase(TestCase): 
    fixtures = ['zipcodes_test.json', 'all_states.json', 'wtf.json'] 
    multi_db = True 
+0

¿Alguien ha encontrado una respuesta para esto? No se pueden obtener accesorios para que no todos se carguen en "predeterminado" – zenWeasel

+0

¿Alguien ha encontrado una respuesta para esto? –

Respuesta

4

En realidad, hay un error en Django que hace que se ignore-db los punteros específicos basados ​​en nombres si se especifica el nombre completo del aparato.

así que si no fixtures = ["mydata.default.yaml", "mydata.myotherdatabase.yaml"]

Se carga ambos accesorios en la base de datos por defecto.

Pero si lo hace fixtures = ['mydata']

Se carga correctamente. Esto también se aplica a los nombres de archivo específicos de dbengine (por ejemplo, mydata.default.postgresql.sql).

+0

Desafortunadamente, esto no es verdad con Django 1.6. Aparece un error que dice 'UserWarning: ningún dispositivo llamado 'migration_test_data' encontrado' cuando intento eso. – CoreDumpError

+0

@CoreDumpError, también recibí la advertencia, pero los dispositivos se cargaron correctamente. Creo que las advertencias son un error. Emití un ticket al respecto: https://code.djangoproject.com/ticket/24680#ticket – ZZY

Cuestiones relacionadas