Когда набор тестов запускается через python manage.py test someapp
, сначала django создает тестовую базу данных, затем применяет все миграции по порядку, а затем запускает тестовые случаи. Поэтому, если цель состоит в том, чтобы протестировать саму миграцию, вам необходимо загрузить данные фикстуры перед этой миграцией.
Вы можете добавить в миграцию строку или два загрузочных приспособления, которые применяют изменения модели только для тестирования, а затем удалить.
def forwards(self, orm):
from django.core import management
management.call_command('loaddata', 'myfixture.json')
... your migration
Кроме того, вы можете добавить условие для некоторых готовых настроек django, тогда вам не придется редактировать код позже.