gpt4 book ai didi

python - Django 测试 : no data in temporary database file

转载 作者:太空狗 更新时间:2023-10-30 02:49:12 25 4
gpt4 key购买 nike

我正在使用一个 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,如果有任何兴趣的话。

EDIT2

我熟悉固定装置,我用它们来填充数据库,但我的问题是在测试期间,固定装置中的数据没有写入数据库文件。抱歉,如果我对这个事实不够清楚。

EDIT3

由于我的问题需要澄清,请考虑以下测试设置(接近我实际所做的):

class SomeTestCase(django.test.TestCase):
fixtures = ["some_fixture.json", "some_other_fixture.json"]

def testSomething(self):
import pdb; pdb.set_trace()

testSomething 方法遇到断点时,我启动 sqlite3 程序并连接到 Django 创建的临时数据库文件。夹具已加载(我知道,因为其他测试也有效)但数据未写入临时数据库文件。

最佳答案

也许与how Django tests use transactions有关?

如果您 turn off all transactions,请检查问题是否仍然存在在 settings.py 中:

DISABLE_TRANSACTION_MANAGEMENT = True

关于python - Django 测试 : no data in temporary database file,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9310360/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com