【发布时间】:2020-05-02 16:51:42
【问题描述】:
我有一个在 Heroku 上运行的 API,并且希望能够使用测试数据库对其进行测试。我的问题是 TestCase setUp(self) 方法将数据添加到自动创建的测试数据库中。然后我的测试将 POST 请求发送到其本地运行的版本。然后,该代码仅使用常规默认数据库,而不是运行测试的测试数据库。
这是一些代码和我尝试过的。
在我的主要 settings.py 中,我将数据库命名为这样
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': 'theOneTrueDB',
}
}
我在这里读到 (https://docs.djangoproject.com/en/3.0/topics/testing/overview/#the-test-database)
默认测试数据库名称是通过在 DATABASES 中每个 NAME 的值前面添加 test_ 来创建的。
所以我在我的视图文件中找到了我可以做的一个应用程序 Tenant.objects.using('test_theOneTrueDB').all() 这会起作用,但它说
django.db.utils.ConnectionDoesNotExist:连接 test_theOneTrueDB 不存在
我也试过了
Tenant.objects.using('test_default')
还有很多其他的东西。我迷路了。我也可以设置另一个数据库,然后在设置中使用它
Tenant.objects.save(using='theOneTrueDBTest)
或类似的东西。
任何帮助将不胜感激!
编辑: 我知道我的设置是这样的
DATABASES = {
'default': {
'NAME': 'theOneTrueDB',
'ENGINE': 'django.db.backends.sqlite3',
},
'other': {
'NAME': 'theOneTrueTest',
'ENGINE': 'django.db.backends.sqlite3',
}
}
但是如果我尝试像这样保存到其他数据库
tempPM.save(using='other')
然后我得到这个错误
AssertionError:此测试中不允许对“其他”进行数据库查询。将“其他”添加到 API.tests.TenantLogin.databases 以确保正确的测试隔离并消除此故障。
【问题讨论】:
标签: python django database unit-testing django-models