Probar la aplicación django con varias bases de datos heredadas
Tengo la aplicación django con 5 bases de datos heredadas. Casi todos los modelos se configuran con el meta atributomanaged=False
. Ya quemanaged=False
está configurado, se han creado migraciones para cada modelo con la opciónmanaged=False
. Y dado que django test runner selecciona las migraciones existentes para cada modelo para crear tablas de prueba en test_databases, simplemente no crea nada. Traté de creartest.py
archivo de configuración con las siguientes soluciones alternativas:
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'
y corriendopython manage.py test --settings=web_services.settings.test
. Sin embargo, no ayudó, ya que de todos modos, las migraciones existentes ya se habían creado conmanaged=False
opción. Las pruebas parecen funcionar solo después de comentar en mis modelosmanaged=False
, borró migraciones antiguas, creó nuevas (sinmanaged=False
opción).
Con esto, estoy bastante perdido: ¿qué es realmente una buena práctica escribir pruebas en mi caso (múltiples bases de datos heredadas)? Parece incorrecto lidiar con la molestia de ajustar las migraciones.