【问题标题】:How can I set up django not to use in-memory database during unittest?如何设置 django 在单元测试期间不使用内存数据库?
【发布时间】:2015-05-16 15:31:22
【问题描述】:

django 在内存中建立一个数据库,用于测试选择的数据库引擎是否为 sqlite3。但是,我需要数据库位于文件系统上。如何更改设置才能实现这一点?

【问题讨论】:

  • 为什么需要文件系统上的数据库?我不建议将 SQLite 用于任何严重的事情。

标签: python django unit-testing sqlite


【解决方案1】:

根据documentation

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

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'
    }
}

【讨论】:

    猜你喜欢
    • 2011-01-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-08-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多