[英]DJango testing multiple database application
我有 django 應用程序,它有兩個數據庫defaultdb
和externdb
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
"NAME": config("DB_NAME"),
"USER": config("DB_USER"),
"PASSWORD": config("DB_PASSWORD"),
"HOST": config("DB_HOST"),
"PORT": config("DB_PORT"),
'OPTIONS': {
'charset': 'utf8mb4',
'init_command': "SET sql_mode='STRICT_TRANS_TABLES'"
},
'TEST': {
'NAME': 'test_{0}'.format(config("DB_NAME")),
'MIRROR': "default",
},
},
'extern': {
'ENGINE': 'django.db.backends.mysql',
'NAME': config("DB_EXTERN_NAME"),
'USER': config("DB_EXTERN_USER"),
'PASSWORD': config("DB_EXTERN_PASSWORD"),
'HOST': config("DB_EXTERN_HOST"),
'PORT': config("DB_EXTERN_PORT"),
'TEST': {
'NAME': 'test_{0}'.format(config("DB_EXTERN_NAME")),
'MIRROR': "extern",
},
}
}
該應用程序運行良好,但在測試時,出現以下錯誤
嘗試訪問外部數據庫時
from extern_db.models import TBasicInfo
class HelpViewTest(TestCase):
def test_api(self):
tb = TBasicInfo.objects.get(info_id=10352)
發生此錯誤
AssertionError: Database queries to 'extern' are not allowed in this test. Add 'extern' to defapp.tests.HelpViewTest.databases to ensure proper test isolation and silence this failure.
我應該檢查哪個設置?
改變:
tb = TBasicInfo.objects.get(info_id=10352)
對此:
tb = TBasicInfo.objects.using("extern").get(info_id=10352)
或者
您還可以將 databases = "extern" 添加到此:
from extern_db.models import TBasicInfo
class HelpViewTest(TestCase):
def test_api(self):
tb = TBasicInfo.objects.get(info_id=10352)
最終版本:
from extern_db.models import TBasicInfo
class HelpViewTest(TestCase):
databases = 'extern'
def test_api(self):
tb = TBasicInfo.objects.get(info_id=10352)
此方法基本上是建議您在該消息中執行的操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.