我已经安装了django-1.7,并要求对内部django模块进行测试。 (具体来说,我们正在运行Django==1.7.9
和psycopg2==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中创建一个测试数据库,但没有必须从一开始就运行每次迁移。
答案 0 :(得分:0)
事实证明我们正在使用multidb设置。将DATABASE_ROUTERS
设置为空白可迭代[]
重新启用测试数据库创建。