Je suis en train de tester mon application et je rencontre un problème et je ne sais pas pourquoi. Je charge des appareils pour mes tests et les appareils ont des clés étrangères qui dépendent l'une de l'autre. Ils doivent être chargés dans un certain ordre ou cela ne fonctionnera pas.Est-ce que les appareils Django se chargent dans un ordre incorrect lors des tests?
Les accessoires que je suis chargement sont:
["test_company_data", "test_rate_index", 'test_rate_description']
données de l'entreprise est la première. test_rate_index a une clé étrangère à company, et test_rate_description a une clé étrangère à un modèle déclaré dans test_rate_index. Si vous utilisez la procédure standard de django pour charger les tests, les tests ne se chargent pas dans le bon ordre.
class TestPackages(test.TestCase): fixtures = ["test_company_data", "test_rate_index", "test_rate_description",]
je reçois le message
DoesNotExist: RateDescription matching query does not exist.
Mais si j'inverser l'ordre de mes appareils (qui n'a pas de sens) cela fonctionne:
fixtures = ["test_rate_description", "test_company_data", "test_rate_index",]
Django's documentation indique que les appareils se chargent dans l'ordre ils sont déclarés, mais cela ne semble pas être le cas.
Pour contourner ce problème, au lieu d'utiliser, je suis de django
call_command('loaddata', *fixtures, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
en utilisant une fonction différente dans la méthode de configuration qui charge les appareils un à la fois.
def load_fixtures(fixtures): for fixture in fixtures: call_command('loaddata', fixture, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
Y at-il quelque chose que je fais mal ou ne pas comprendre qui est à l'origine de mes appareils ne doit pas être chargé dans l'ordre approprié lorsque vous essayez d'utiliser la méthode standard?
pouvez-vous publier à quoi ressemblent les modèles de vos appareils? –