我的多数据库测试问题如下:
# (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
然后依次ERROR
和ERROR: 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之前都已成功拆除。
答案 0 :(得分:0)
解决方案:我需要使用SimpleTestCase
代替TestCase
,瞧,问题解决了。
该问题发生在_post_teardown()
中,该问题应该是一个空函数(因为TestCase
中为空),但是由于某种原因,TransactionTestCase
的{{1}}被执行了