可以使用测试数据库获得交互式的Django shell吗?

4

进行测试时,您可以执行以下操作:

./manage.py test --keepdb

为运行测试并保留测试数据库,我们是否可以让Django shell实际连接到该数据库,以便我们可以像处理生产数据库一样交互式地访问测试数据库?请注意,这里的答案和评论表明,您可以通过执行类似以下内容的操作来访问它:

from django import test
test.utils.setup_test_environment()
from django.db import connection
db = connection.creation.create_test_db(keepdb=True)

但是当我这样做时,当我进行查询时,我的数据库似乎是空的。


你确定测试数据库里有任何行吗? - Iain Shelvington
1
我的setUpTestData()类方法创建了模型的新实例,并将其保存到测试数据库中,供我后来在测试方法中使用。由于我使用了--keepdb参数,我会认为它能够生效,但是直接连接到我的MySQL数据库时,我的test_数据库中的表是空的。我做错了什么吗? - John
1个回答

0

我遇到了这个问题,起初我以为是因为我正在工作的代码库在拆卸函数中有一个flush调用,但是在删除这些之后我的数据库仍然是空的。也许还有其他地方有flush操作,我没有注意到。

最终,我通过在测试结束时休眠来解决这个问题,这样它就不会退出并进行清理。


我有相反的问题。我想要空的测试数据库,然后我想运行一个测试文件的设置命令来加载数据,但是当我这样做时,它会抱怨与现有数据的冲突... - hepcat72

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接