如何在单元测试期间设置django不使用内存数据库?

时间:2015-03-14 01:01:00

标签: python django unit-testing sqlite

django在内存中设置一个数据库,用于测试所选的数据库引擎是否为sqlite3。但是,我需要数据库在文件系统上。如何更改设置以实现此目的?

1 个答案:

答案 0 :(得分:5)

根据documentation

  

默认情况下,测试数据库通过预先添加test_来获取其名称   DATABASES中定义的数据库的NAME设置的值。   使用SQLite数据库引擎时,测试默认使用   内存数据库(即数据库将在内存中创建,   彻底绕过文件系统!)。 如果你想使用不同的   数据库名称,在任何给定的TEST字典中指定NAME   DATABASES中的数据库

TEST字典中指定NAME键:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        ...
        'TEST': {
            'NAME': '/path/to/the/db/file'
        }
    }
}

请注意,对于Django 1.6及更低版本,您应该设置TEST_NAME

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3', 
        ...
        'TEST_NAME': '/path/to/the/db/file'
    }
}