2
私のDjangoアプリケーションは正常に動作しますが、Djangoの組み込みユニットテストに問題があります。 routers.pyで、Djangoテストランナーはデフォルト以外のデータベース接続を見つけることができません
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"],
}
}
多分関連:settings.pyで
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
:デフォルトのデータベース以外のデータベースを使用してアプリのDjangoのテストランナーを実行しているとき、私はエラーを取得する
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
私は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バージョン:1.9.8。以下のためのメモリデータベースを追加した後
if 'test' in sys.argv:
DATABASES = {'default': {'ENGINE': 'django.db.backends.sqlite3'}}
:問題は、私は試験の場合には、settings.pyファイル内のデータベース辞書を上書きされていた7