为什么django测试-keep-db适用于postgres数据库但不适用于默认的sqlite3

时间:2017-08-18 12:26:58

标签: django postgresql testing sqlite

我正在两个数据库设置中测试Django(v1.11.4)应用程序: 1)在docker容器中运行的postgres数据库 要么 2)sqlite3 as(默认数据库)

当使用--keepdb选项运行测试时,我观察到这两种设置的不同行为:对于postgres --keepdb按预期工作(没有数据库创建并且运行测试很快)但是对于sqlite3数据库{{ 1}}似乎不起作用(对于每次测试运行,都有数据库的创建)。 是否可以--keepdb使用sqlite3?如果是,任何想法可能会影响上述行为?

1 个答案:

答案 0 :(得分:6)

默认情况下,Django uses an in-memory database when testing sqlite。这意味着测试数据库不是持久的。您可以通过指定测试名称在DATABASES设置中覆盖此行为:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite',
        'NAME': 'db.sqlite3',
        'TEST': {
            'NAME': 'testdb.sqlite3',
        },
    },
}