Sto testando la mia domanda e sto riscontrando un problema e non sono sicuro del perché. Sto caricando gli apparecchi per i miei test e gli apparecchi hanno chiavi esterne che dipendono l'una dall'altra. Devono essere caricati in un certo ordine o non funzionerà.Le partite di Django vengono caricate in ordine errato durante il test?
Gli apparecchi Sono carico sono:
["test_company_data", "test_rate_index", 'test_rate_description']
dati Company è il primo. test_rate_index ha una chiave esterna per la società e test_rate_description ha una chiave esterna per un modello dichiarato in test_rate_index. (a parte, test diversi hanno bisogno di dispositivi diversi, motivo per cui non sto solo spingendo tutto in uno)
Se utilizzo la procedura standard di django per caricare i test, i test non vengono caricati nell'ordine corretto.
class TestPackages(test.TestCase): fixtures = ["test_company_data", "test_rate_index", "test_rate_description",]
ottengo il messaggio
DoesNotExist: RateDescription matching query does not exist.
Ma se invertire l'ordine dei miei apparecchi (che non ha senso) funziona:
fixtures = ["test_rate_description", "test_company_data", "test_rate_index",]
Django's documentation afferma che gli infissi caricano nell'ordine sono dichiarati, ma questo non sembra essere il caso.
Per risolvere il problema, invece di usare di
call_command('loaddata', *fixtures, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
sto usando una funzione diversa nel metodo di configurazione che carica gli infissi una alla volta Django.
def load_fixtures(fixtures): for fixture in fixtures: call_command('loaddata', fixture, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
C'è qualcosa che sto facendo in modo errato o non capire che sta causando i miei apparecchi non deve essere caricato nel modo più corretto quando si tenta di utilizzare il metodo standard?
puoi pubblicare i modelli dei tuoi apparecchi? –