我正在測試我的應用程序,我遇到了一個問題,我不知道爲什麼。我正在爲我的測試加載燈具,燈具有互相依賴的外鍵。它們必須以特定順序加載,否則它將無法工作。Do Django Fixtures在測試時加載順序不正確?
我裝的燈具是:
["test_company_data", "test_rate_index", 'test_rate_description']
公司數據是第一位的。 test_rate_index對公司有一個外鍵,並且test_rate_description對在test_rate_index中聲明的模型有一個外鍵。 (順便說一下,不同的測試需要不同的燈具,這就是爲什麼我不只是將所有東西都放在一箇中)
如果我使用django的加載測試的標準過程,測試不會按正確的順序加載。
class TestPackages(test.TestCase): fixtures = ["test_company_data", "test_rate_index", "test_rate_description",]
我得到的消息
DoesNotExist: RateDescription matching query does not exist.
但是,如果我扭轉我的燈具的順序(這是沒有意義的),它的工作原理:
fixtures = ["test_rate_description", "test_company_data", "test_rate_index",]
Django's documentation規定,燈具的順序加載他們被宣佈,但似乎並非如此。
作爲一種解決辦法,而不是使用Django的
call_command('loaddata', *fixtures, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
我使用的加載夾具一次一個設置方法不同的功能。
def load_fixtures(fixtures): for fixture in fixtures: call_command('loaddata', fixture, **{ 'verbosity': 0, 'commit': False, 'database': 'default' })
有沒有什麼我不正確地做或不理解,導致我的燈具沒有按正確的順序加載時嘗試使用標準方法?
你可以發佈你的燈具模型是什麼樣子嗎? – 2010-08-26 16:22:02