【问题标题】:Why django test --keep-db works with postgres database but not with default sqlite3为什么 django test --keep-db 适用于 postgres 数据库但不适用于默认 sqlite3
【发布时间】:2018-01-27 03:20:41
【问题描述】:

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

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

【问题讨论】:

    标签: django postgresql testing sqlite


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2020-07-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-03-31
      • 1970-01-01
      • 2017-05-08
      • 1970-01-01
      相关资源
      最近更新 更多