Я затронул эту проблему сегодня. В конце концов я закончил рефакторинг своих миграций, чтобы они использовали вспомогательные функции для вставки данных, а затем вызывал те же функции из setUp () моих тестов.
Некоторые подсказки;
Заставьте ваши вспомогательные функции принимать класс модели в качестве аргумента, чтобы вы могли вызывать их с помощью orm ['yourapp.YourModel'] из миграции и с models.YourModel из теста. Это также показывает основное ограничение: South работает для моделей, схема которых изменилась с тех пор, тестовый код не может этого сделать. Мне повезло, что эта конкретная модель не изменилась.
Если вы хотите сохранить вспомогательные методы внутри миграций, вы обнаружите, что не можете напрямую импортировать yourapp.migrations.0001_some_migration, поскольку идентификаторы не могут начинаться с цифр. Используйте что-то вроде migration_0001 = importlib.import_module('yourapp.migrations.0001_some_migration')
вместо оператора импорта.