Django 1.7测试生产数据库而不是创建测试数据库

时间:2016-08-29 15:31:15

标签: django database django-testing django-tests

我已经安装了django-1.7,并要求对内部django模块进行测试。 (具体来说,我们正在运行Django==1.7.9psycopg2==2.5.4

经过两天的抓挠,我仍然发现当我运行manage.py test mymodule时,它正在测试生产 postgres数据库,而不是创建一个测试数据库来安装我的夹具数据。

奇怪的是,我没有得到任何错误消息或任何指示它试图创建一个测试数据库。测试套件只是对生产数据库进行测试。

我已经验证了我正在运行的用户在postgres中对测试数据库具有CREATE / DROP权限。

我还尝试通过根据文档指定TEST数据库引擎作为内置sqlite3来使我的测试套件使用内存数据库,如下所示:

DATABASES = {
  'default': {
    'NAME': DATABASE_NAME,
    'PASSWORD': 'nottherealpassword',
    'ENGINE': 'django.db.backends.postgresql_psycopg2',
    'USER': 'nottherealdbuser',
    'PORT': '5432',
    'HOST': '127.0.0.1',
    'TEST': {
            'ENGINE': 'django.db.backends.sqlite3'
            }
    },
  }

此配置的行为也没有变化,也没有迹象表明它甚至尝试来创建一个。是否存在测试运行器甚至尝试为给定模块创建测试数据库的情况?我已经尝试了默认的django跑步者以及django_nose而没有改变行为。

我的首选结果是测试一个微小的内存数据库,我会用固定装置填充它;我的第二个首选结果是在postgres中创建一个测试数据库,但没有必须从一开始就运行每次迁移。

1 个答案:

答案 0 :(得分:0)

事实证明我们正在使用multidb设置。将DATABASE_ROUTERS设置为空白可迭代[]重新启用测试数据库创建。