我可以为django测试设置数据库吗?

时间:2015-10-18 19:04:51

标签: django testing

在运行django测试时创建一个临时数据库非常耗时,所以我想为django测试设置一个单独的数据库。可能吗?如果是这样,我该如何实现呢?

更具体一点:我不希望django创建一个新的数据库,并且每次运行./manage.py测试时都要进行迁移和测试。我希望它连接到现有数据库(当我已经创建用于测试时)并完成所有工作。

2 个答案:

答案 0 :(得分:4)

运行测试时可以使用--keepdb选项,这样就不会在每次运行结束时销毁数据库。

./manage.py test --keepdb

答案 1 :(得分:0)

我不确定我是否理解你的问题,但是当我对开发进行测试时,我只使用SQLite。 SQLite是我的测试数据库。当我把它投入生产时,我使用PostgreSQL。这是我在开发时测试时的settings.py:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': os.path.join(BASE_DIR, 'db.sqlite3'),
    }
}

我曾经使用PostgreSQL进行测试(我改用SQLite因为设置起来更快)。

如果我使用PostgreSQL进行测试,我的settings.py将如下所示:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'TESTDB',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

当我没有测试时,我会使用它:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.postgresql_psycopg2',
        'NAME': 'ProductionDB',
        'USER': 'mydatabaseuser',
        'PASSWORD': 'mypassword',
        'HOST': '127.0.0.1',
        'PORT': '5432',
    }
}

就像我之前提到的那样,我开始使用SQLite进行测试,因为它更快。