我的多数据库测试问题如下:
# (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
然后错误
然后错误: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()
引发错误,我可以看到两个虚拟数据库之前都已成功拆除。
最佳答案
解决方案:我需要使用 SimpleTestCase
而不是 TestCase
,瞧,问题解决了。
问题发生在 _post_teardown()
中,它应该是一个空函数(因为它在 TestCase
中是空的),但由于某种原因 TransactionTestCase
> 的 _post_teardown()
被执行。
关于Django 多数据库测试在拆卸后失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51636141/