Django多数据库测试在拆解后失败

时间:2018-08-01 14:40:56

标签: django django-models django-testing

我的多数据库测试问题如下:

# (django 2.0.7, python 3.6)
# settings.py:

DATABASES = {
    'default':{}, 
    'one': { # connection1 settings here }
    'two': { # connection2 settings here }
}
DATABASE_ROUTERS = []

# test.py
class MyTestCase(TestCase):

    def test_my_function(self):
         pass # this IS literally the code

我运行python manage.py test -v 2,看到测试运行器建立了两个模拟数据库并运行了绿色的测试

test_my_function (mymodule.test.MyTestCase) ... ok

然后依次ERRORERROR: test_get_pronunciation (languages.test_hr.HRTestCase)

具有以下说明:

File "/Users/Barnabas/PycharmProjects/rhymedict-multisite/venv/lib/python3.6/site-packages/django/db/backends/dummy/base.py", line 20, in complain
    raise ImproperlyConfigured("settings.DATABASES is improperly configured. "
django.core.exceptions.ImproperlyConfigured: settings.DATABASES is improperly configured. Please supply the ENGINE value. Check settings documentation for more details.

这应该意味着程序尝试访问'default'数据库。

(如果我将multi_db = True添加到MyTestCase中,也会发生同样的事情)

奇怪的是,我写

class MyTestCase(TestCase):
    pass

数据库已建立好,拆除就好了。

我做错了什么?

更新:

self._post_teardown()引发了错误,我可以看到两个虚拟db之前都已成功拆除。

1 个答案:

答案 0 :(得分:0)

解决方案:我需要使用SimpleTestCase代替TestCase,瞧,问题解决了。

该问题发生在_post_teardown()中,该问题应该是一个空函数(因为TestCase中为空),但是由于某种原因,TransactionTestCase的{​​{1}}被执行了