我正在测试我的应用程序,我遇到了一个问题,我不知道为什么。我正在为我的测试加载夹具,并且夹具具有相互依赖的外键。它们必须按特定顺序加载,否则将不起作用。
我正在加载的固定装置是:
["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,
“提交”:错误,
“数据库”:“默认”
})
在尝试使用标准方法时,是否有什么我做错了或不理解导致我的装置没有按正确的顺序加载?