我正在使用 django-nose 在 django (1.4) 中运行我的单元测试。
TEST_RUNNER = 'django_nose.NoseTestSuiteRunner'
创建数据库需要很长时间。
所以我发现把它放在settings.py中:
os.environ['REUSE_DB'] = "1"
应该做的伎俩。
实际上 django itsellve 给出了这个建议:
To reuse old database "<path not very interesting>/var/sqlite/unittest.db" for speed, set env var REUSE_DB=1.
当然,您需要使用此标志 =0 运行一次(或在每次数据库更改后)
但是,当您将标志设置为 0 时,我的测试以以下备注结束:
Destroying test database for alias 'default'...
所以当我想重用运行它时......没有什么可以重用......我会收到错误说该表不存在
DatabaseError: no such table: <and than a table name>
将reuse_db设置为0时测试运行完美
我在我的开发设置中使用测试数据库别名:
DATABASES = {
'default': {
'NAME': os.path.join(BUILDOUT_DIR, 'var', 'sqlite', 'development.db'),
'TEST_NAME': os.path.join(BUILDOUT_DIR, 'var', 'sqlite', 'unittest.db'),
'ENGINE': 'django.db.backends.sqlite3',
'USER': '',
'PASSWORD': '',
'HOST': '',
'PORT': '',
}
}
我没有使用内存中的 sqllite 数据库进行测试,因为我在某处读到这不适用于 django-nose。
那么,当它最终破坏数据库时,我该如何重用数据库......
根据这个https://docs.djangoproject.com/en/1.4/topics/testing/#the-test-database django 正在这样做,但它没有显示如何防止这种情况(如果可以的话),或者如何使用reuse_db 选项。我应该使用其他设置吗?