簡體   English   中英

DJango 測試多數據庫應用

[英]DJango testing multiple database application

我有 django 應用程序,它有兩個數據庫defaultdbexterndb

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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM