我正在使用如下设置的 sqlite3 数据库settings.py
:
DATABASES = {
'default': {
'ENGINE': 'django.contrib.gis.db.backends.spatialite',
'NAME': 'path/to/config.sqlite',
'TEST_NAME': 'path/to/test-config.sqlite',
# ... USER, PASSWORD and PORT left out for brevity
}
}
在测试运行期间开始:
python manage.py test myapp.mytest
这会临时创建一个数据库文件path/to/test-config.sqlite
,我在另一个加载了所需装置的应用程序中需要该文件。
然而,数据库文件是空的,我在一个测试的暂停期间断言:
sqlite> select * from someapp_somemodel;
... no results here :(
其他不需要 sqlite 文件并且内存数据库就足够的测试用例,不会发生错误。
我的问题:
- 如果 django 无论如何创建它,为什么不将其数据刷新到数据库文件?和
- 我如何说服 django 这样做,因为我需要将数据转储到临时数据库文件中?
编辑
如果有任何兴趣,我正在使用 Django 1.3.1。
编辑2
我对fixtures很熟悉,我用它们来填充数据库,但我的问题是fixtures的数据在测试期间没有写入数据库文件。对不起,如果我对这个事实不够清楚。
编辑3
由于我的问题需要澄清,请考虑以下测试设置(接近我实际所做的):
class SomeTestCase(django.test.TestCase):
fixtures = ["some_fixture.json", "some_other_fixture.json"]
def testSomething(self):
import pdb; pdb.set_trace()
当testSomething
方法运行到断点时,我启动sqlite3
程序并连接到 Django 创建的临时数据库文件。夹具已加载(我知道,因为其他测试也可以正常工作),但数据未写入临时数据库文件。