Ich teste meine Bewerbung und stoße auf ein Problem und ich bin mir nicht sicher warum. Ich lade Geräte für meine Tests und die Geräte haben Fremdschlüssel, die aufeinander angewiesen sind. Sie müssen in einer bestimmten Reihenfolge geladen werden oder es wird nicht funktionieren.Werden Django-Geräte beim Testen in falscher Reihenfolge geladen?
Die Armaturen I Laden bin, sind:
["test_company_data", "test_rate_index", 'test_rate_description']
Firmendaten die erste ist. test_rate_index hat einen Fremdschlüssel für das Unternehmen und test_rate_description hat einen Fremdschlüssel für ein Modell, das in test_rate_index deklariert ist. (Nebenbei, verschiedene Tests benötigen unterschiedliche Fixtures, weshalb ich nicht einfach alles in einen hineinschiebe)
Wenn ich das Django-Standardverfahren zum Laden von Tests verwende, werden die Tests nicht in der richtigen Reihenfolge geladen.
class TestPackages(test.TestCase): fixtures = ["test_company_data", "test_rate_index", "test_rate_description",]
Ich erhalte die Meldung
DoesNotExist: RateDescription matching query does not exist.
Aber wenn ich in umgekehrter Reihenfolge meiner Armaturen (was keinen Sinn macht) funktioniert es:
fixtures = ["test_rate_description", "test_company_data", "test_rate_index",]
Django's documentation heißt es, dass die Befestigungen in der Reihenfolge laden Sie werden erklärt, aber das scheint nicht der Fall zu sein.
Als Abhilfe können anstelle der Verwendung von Djangos
call_command('loaddata', *fixtures, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
Ich verwende eine andere Funktion im Setup-Methode, die die Geräte einer nach dem anderen lädt.
def load_fixtures(fixtures): for fixture in fixtures: call_command('loaddata', fixture, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
Gibt es etwas, was ich tue, das Verständnis falsch oder gar nicht, dass meine Armaturen verursacht nicht in der richtigen Reihenfolge geladen werden, wenn die Standardmethode zu verwenden versuchen?
Wie können Sie die Modelle Ihrer Geräte anzeigen? –