访问Django测试数据库

4
我有一个运行在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')

然后我遇到了这个错误

断言错误:在此测试中不允许对“other”进行数据库查询。将“other”添加到API.tests.TenantLogin.databases以确保正确的测试隔离并消除此故障。

1个回答

0

您不需要直接访问测试数据库。它将被默认使用,您不需要担心它。

默认情况下,sqlite3后端将使用内存数据库,并具有以下名称:file:memorydb_default?mode=memory&cache=shared,您可以在测试运行时检查设置:

from django.conf import settings
print(settings.DATABASES)

2
请参阅sqlite3后端的详细信息。 - djvg
1
如果我使用 --keepdb 并且想要使用 DBMS 应用程序检查数据库,我该如何操作? - Silidrone

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接