2016-07-20 10 views
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

答えて

1

イムは、CentOSのでドッカー内部で実行しています「other_db」のものが再び働いた:

if 'test' in sys.argv: 
    DATABASES = { 
       'default': {'ENGINE': 'django.db.backends.sqlite3'}, 
       'other_db': {'ENGINE': 'django.db.backends.sqlite3'} 
       } 
関連する問題