在运行django测试时创建一个临时数据库非常耗时,所以我想为django测试设置一个单独的数据库。可能吗?如果是这样,我该如何实现呢?
更具体一点:我不希望django创建一个新的数据库,并且每次运行./manage.py测试时都要进行迁移和测试。我希望它连接到现有数据库(当我已经创建用于测试时)并完成所有工作。
答案 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进行测试,因为它更快。