Я тестирую свое приложение, и у меня возникла проблема, и я не знаю почему. Я загружаю приборы для своих тестов, и у них есть внешние ключи, которые зависят друг от друга. Они должны быть загружены в определенном порядке, иначе он не будет работать.
Установки, которые я загружаю:
["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 говорится, что приборы загружаются в том порядке, в котором они были объявлены, но, похоже, это не так.
В качестве обходного пути вместо использования django's
call_command('loaddata', *fixtures, **{
'verbosity': 0,
'commit': False,
'database': 'default'
})
Я использую другую функцию в методе setUp, которая загружает приборы по одному.
def load_fixtures(fixtures):
for fixture in fixtures:
call_command('loaddata', fixture, **{
'verbosity': 0,
'commit': False,
'database': 'default'
})
Есть ли что-то, что я делаю неправильно или не понимаю, что приводит к тому, что мои приборы не загружаются в правильном порядке при попытке использовать стандартный метод?