2010-11-03 7 views
11

Ich habe zwei Datenbanken, die meine Website verwendet und ich habe eine Anwendung, die beide verwendet. Ich muss einen Testfall schreiben, der Geräte für beide Datenbanken lädt. Ich benutze einen DB-Router, der in der Produktion, sondern in dem Test-Framework funktioniert gut, Django besteht auf mit der ‚Standard‘ Datenbank für alle Geräte, auch für Modelle, die die andere Datenbank angeben. Wie kann ich Django sagen, dass er eine Fixture gegen eine andere Datenbank ausführen soll?django - angeben Datenbank für Testcase Befestigungen

Meine Testcase ist Liste definiert:

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

Hat jemand eine Antwort für diese gefunden? Kann Fixtures nicht alle laden in 'Standard' – zenWeasel

+0

Hat jemand eine Antwort dafür gefunden? –

Antwort

4

Es gibt tatsächlich einen Fehler in Django, dass es die namensbasierte db-spezifischen Hinweise zu ignorieren verursacht, wenn Sie die gesamten Befestigungsnamen angeben.

so, wenn Sie fixtures = ["mydata.default.yaml", "mydata.myotherdatabase.yaml"]

tun es beide Vorrichtungen in die Standard-Datenbank laden.

Aber wenn Sie fixtures = ['mydata']

tun richtig Es wird geladen. Dies gilt auch für dbengine-spezifische Dateinamen (z. B. mydata.default.postgresql.sql).

+0

Leider ist dies nicht wahr mit Django 1.6. Ich erhalte eine Fehlermeldung mit dem Hinweis 'UserWarning: Kein Gerät namens 'migration_test_data' gefunden, wenn ich das versuche. – CoreDumpError

+0

@CoreDumpError, Ich habe auch die Warnung, aber, Fixtures wurden korrekt geladen. Ich denke, die Warnungen sind ein Fehler. Ich habe ein Ticket darüber ausgestellt: https://code.djangoproject.com/ticket/24680#ticket – ZZY

Verwandte Themen