【问题标题】:How can add multiple database for tests in Django tests如何在 Django 测试中为测试添加多个数据库
【发布时间】:2019-12-07 06:15:31
【问题描述】:

问题:

如何在Django中添加多个数据库进行测试?

当我运行我的测试服时,我得到了这个错误:

AssertionError:此测试中不允许对“mig”进行数据库查询。将“mig”添加到 path_to_test_suit.MigrationServiceTest.databases 以确保正确的测试隔离并消除此故障。

这是我的 PostgreSQL 设置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'db_1_name',
        'USER': 'db_1_user',
        'PASSWORD': 'db_1_passwd',
        'HOST': 'db_1_host',
        'PORT': 'db_1_port',
    },
    'mig': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': db_2_name,
        'USER': db_2_user,
        'PASSWORD': 'db_2_passwd',
        'HOST': 'db_2_host',
        'PORT': 'db_2_port',
    },
}

我使用Django-nose 运行测试套装,使用Django 2.2

【问题讨论】:

  • 您找到解决方案了吗?
  • 嗨,很遗憾,我忘记了解决问题的方法。

标签: django python-3.x unit-testing django-models


【解决方案1】:

您可以在测试中使用database 参数。 例如:

class TestYourClass(TestCase):
    databases = {'default', 'mig'}

def test_some_method(self):
    call_some_method()

更多信息请查看Multi-database support

附:在 Django 2.2 之后的最早版本中,请使用multi_db = True

class TestYourClass(TestCase):
    multi_db = True

【讨论】:

    【解决方案2】:

    您需要授予 DJANGO 用户写入权限。 然后,要进行测试并保留您的数据,您必须使用 test_ 作为前缀复制您的模式并使用密钥 --keepdb。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2011-09-23
      • 2020-07-02
      • 2015-12-15
      • 2011-10-17
      相关资源
      最近更新 更多