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

标签 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

然后错误然后错误: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/

相关文章:

python - Django,ManyToManyField - ProgrammingError : relation foo_bar does not exist. 在迁移中被识别,但从未创建关系

python - 在 Django 中测试特定模型

python - django.db.models.fields.related_descriptors.RelatedObjectDoesNotExist 通过测试 django 形式

python - Pytest-django:测试后无法删除数据库

django - 为什么 µ 在 django 的管理中显示像 M?

python-3.x - Django 将 isbn10 传递给 url

带有M2M字段的Django对象唯一性 hell

python - Django:扩展其他应用程序的模型

python - 如何使用 Django 的 assertJSONEqual 来验证 View 返回 JsonResponse 的响应

python - 如何使模型中的整数字段固定为十个数字输出