DJango 测试多个数据库应用程序

白熊

我有 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)

这种方法基本上是建议您在该消息中执行的操作。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

使用多个旧数据库测试Django应用程序

django测试应用程序错误-创建测试数据库时出错:创建数据库的权限被拒绝

多个Django数据库-将模型映射到同一应用程序中的数据库

具有多个数据库和特定于应用程序的路由器的Django,无法在MSSQL中添加用户

Django应用程序的数据库设计

Django / Python应用程序的数据库引擎选择

Django-在多个数据库之间同步数据

Django-多个数据库-数据迁移

Django 在一个项目中为两个应用程序提供两个数据库。如何正确进行迁移?

用于从 django 应用程序中选择数据库数据的按钮

从Django应用程序中从数据库中选择数据

如何使用数据库在Django中的应用程序之间交换数据?

在Django管理中公开多个数据库

Django - 访问多个数据库中的值

Django:如何使用多个数据库?

在RedShift中使用Django多个数据库

Django Rest框架多个数据库

带有多个数据库的Django迁移

从Django中的多个数据库表返回结果

Django多个数据库(完整性检查)

Django ManyToMany通过多个数据库

登录 Django 上的多个数据库

Django从多个数据库读取和写入

为Django应用选择哪个数据库引擎?

为Django应用选择哪个数据库引擎?

如何从数据库模式自动生成示例Django应用程序?

关于如何在 Django 应用程序中处理 PostgreSQL 数据库的建议?

Django / WSGI应用程序中的持久数据库连接

Python / Django Web应用程序中数据库访问查询的性能优化