Не удается проверить миграции django из теста, но они работают из команды django
Я хочу иметь возможность проверять миграции Django внутри теста (чтобы я мог проверить базовую вменяемость перед запуском более обширных тестов).
Для этого я смог сделать следующее в команде django:
from django.core.management.base import BaseCommand
from django.db.migrations.loader import MigrationLoader
class Command(BaseCommand):
help = "Check migrations"
def handle(self, *args, **options):
self.migration_loader = MigrationLoader(None)
self.migration_loader.build_graph()
for root_node in self.migration_loader.graph.root_nodes():
print(app_name, root_node[0])
Но когда я перевожу это в тест (используя pytest):
from django.db.migrations.loader import MigrationLoader
def test_multiple_leaf_nodes_in_migration_graph():
migration_loader = MigrationLoader(None)
migration_loader.build_graph()
for root_node in migration_loader.graph.root_nodes():
print(app_name, root_node[0])
Тогда граф (корневые узлы) возвращает пустой список. Нужно ли что-то сделать, чтобы я мог "увидеть" миграции в тесте?
pytest --no-migrations
Поскольку вы отключили миграции, MigrationLoader
не будет загружать миграции.
Чтобы загрузить миграции, вы можете переопределить настройки для MIGRATION_MODULES
только для этого теста:
from django.test import override_settings
@override_settings(MIGRATION_MODULES={}) # Add this
def test_multiple_leaf_nodes_in_migration_graph():
...