esten einer Django-Anwendung mit mehreren Legacy-Datenbank
Ich habe Django-Anwendung mit 5 Legacy-Datenbanken. Fast alle Modelle sind mit dem Metaattribut @ gesetzmanaged=False
. Schon seitmanaged=False
enn @ gesetzt ist, wurden Migrationen für jedes Modell mit der Option @ erstellmanaged=False
. Und da Django Test Runner vorhandene Migrationen für jedes Modell auswählt, um Testtabellen in test_databases zu erstellen, erstellt es einfach nichts. Ich habe versucht, @ zu erstelltest.py
Einstellungsdatei mit folgenden Problemumgehungen:
from web_services.settings.dev import *
from django.test.runner import DiscoverRunner
class UnManagedModelTestRunner(DiscoverRunner):
def setup_test_environment(self, *args, **kwargs):
from django.apps import apps
self.unmanaged_models = [m for m in apps.get_models() if not m._meta.managed]
for m in self.unmanaged_models:
m._meta.managed = True
super(UnManagedModelTestRunner, self).setup_test_environment(*args, **kwargs)
def teardown_test_environment(self, *args, **kwargs):
super(UnManagedModelTestRunner, self).teardown_test_environment(*args, **kwargs)
# reset unmanaged models
for m in self.unmanaged_models:
m._meta.managed = False
TEST_RUNNER = 'web_services.settings.test.UnManagedModelTestRunner'
und läuftpython manage.py test --settings=web_services.settings.test
. Es hat aber trotzdem nicht geholfen - bestehende Migrationen wurden bereits mit @ angelemanaged=False
Möglichkeit. Tests scheinen erst zu funktionieren, nachdem ich sie in meinen Modellen auskommentiert habemanaged=False
, alte Migrationen gelöscht, neue erstellt (ohnemanaged=False
Möglichkeit)
Damit bin ich ziemlich verloren - was ist eigentlich eine gute Praxis, um Tests in meinem Fall zu schreiben (mehrere alte Datenbanken)? Es scheint falsch, sich mit dem Aufwand der Anpassung von Migrationen auseinanderzusetzen.