我正在测试我的应用程序,我遇到了一个问题,我不知道为什么。我正在为我的测试加载夹具,并且夹具具有相互依赖的外键。它们必须按特定顺序加载,否则将不起作用。
我正在加载的固定装置是:
["test_company_data", "test_rate_index", 'test_rate_description']
公司数据是第一位的。test_rate_index 有一个指向 company 的外键,而 test_rate_description 有一个指向在 test_rate_index 中声明的模型的外键。(顺便说一句,不同的测试需要不同的夹具,这就是为什么我不只是把所有东西都放在一个里面)
如果我使用 django 的标准程序来加载测试,则测试不会以正确的顺序加载。
类TestPackages(test.TestCase): 夹具 = [“test_company_data”,“test_rate_index”,“test_rate_description”,]
我收到消息
DoesNotExist:RateDescription 匹配查询不存在。
但是,如果我颠倒我的固定装置的顺序(这没有意义),它会起作用:
夹具 = [“test_rate_description”,“test_company_data”,“test_rate_index”,]
Django 的文档指出,fixture 是按照它们声明的顺序加载的,但情况似乎并非如此。
作为一种解决方法,而不是使用 django 的
call_command('loaddata', *fixtures, **{ “冗长”:0, “提交”:错误, “数据库”:“默认” })
我在 setUp 方法中使用了一个不同的函数,它一次加载一个固定装置。
def load_fixtures(夹具): 对于夹具中的夹具: call_command('loaddata', 夹具, **{ “冗长”:0, “提交”:错误, “数据库”:“默认” })
在尝试使用标准方法时,是否有什么我做错了或不理解导致我的装置没有按正确的顺序加载?