Meine Django-Anwendung läuft gut, aber ich habe ein Problem mit Djangos integriertem Komponententest. Wenn auf einer App, die Django Test Runner läuft mit einer anderen Datenbank als der Standarddatenbank bekomme ich einen Fehler:Django-Test-Runner kann keine nicht standardmäßige Datenbankverbindung finden
python manage.py test qc
...
File "/usr/lib64/python2.7/site-packages/django/db/utils.py", line 179, in ensure_defaults
raise ConnectionDoesNotExist("The connection %s doesn't exist" % alias)
ConnectionDoesNotExist: The connection other_db doesn't exist
In settings.py:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_default',
'USER': 'xxx',
'PASSWORD': 'yyy',
'HOST': os.environ["MYSQL_HOST"],
'PORT': os.environ["MYSQL_PORT"],
},
'other_db': {
'ENGINE': 'django.db.backends.mysql',
'NAME': 'db_other',
'USER': 'xxx',
'PASSWORD': 'yyy',
'HOST': os.environ["MYSQL_HOST"],
'PORT': os.environ["MYSQL_PORT"],
}
}
Vielleicht relevant, in routers.py:
def allow_migrate(self, db, app_label, model_name=None, **hints):
if hints.has_key('model'):
model = hints['model']
if db == 'other_db':
return model._meta.app_label == 'qc'
elif model._meta.app_label == 'qc':
return False
return None
else:
if db == 'other_db':
return app_label == 'qc'
elif app_label == 'qc':
return False
Der Testfall ich in laufen bin versucht qc/tests.py:
from django.test import TestCase
from qc.models import *
class HybridTestCase(TestCase):
def setUp(self):
baseA = MyModel.objects.create(id='A',name="NonName")
Django Version: 1.9.8. Im leite in einem Docker mit CentOS 7.