嗨,我想为测试创建一个单独的空数据库。我阅读了Django文档(https://docs.djangoproject.com/en/2.1/topics/testing/overview/) :
默认测试数据库名称是通过将test_前面加上DATABASES中每个NAME的值来创建的。使用SQLite时,默认情况下测试将使用内存数据库(即数据库将在内存中创建,完全绕开文件系统!)。 DATABASES中的TEST词典提供了许多设置来配置您的测试数据库。例如,如果要使用其他数据库名称,请在TEST词典中为DATABASES中的任何给定数据库指定NAME。
所以我尝试了:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
},
'test_db': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'test_db.sqlite3'),
}
}
,但是在使用
运行测试时,它们仍然使用默认数据库./manage.py test
如何为测试目的创建和指定一个新的空数据库?
答案 0 :(得分:1)
我认为您误读文档。 Django自动使用单独的数据库。
说您的配置文件如下:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.sqlite3',
'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
}
}
然后Django将不使用'default'
数据库,如果数据库名称为'FOO'
,它将创建一个名称为 {{1 }} 。这样,测试和运行Django项目应该-在没有“修补”此行为的情况下-应该不会造成干扰(至少不会影响数据库)。
但是,如果您要指定 test_FOO
(或其他属性),则可以在数据库中添加'TEST'
key [Django-doc],例如:
NAME