首先看到此页面:https://docs.djangoproject.com/en/1.9/topics/testing/overview/#the-test-database
我理解为:
1 - 当我运行python manage.py test --keepdb
之类的测试命令时,将保存测试数据库。
2 - 但是如果我使用sqlite,测试数据库将默认在内存中生成。这意味着,虽然我使用--keepdb
而没有设置其他人,但测试数据库不会保存。
3 - 如果我使用除了sqlite之外,测试数据库将在文件系统中发生,这意味着我可以看似文件中的数据库或sql-control-tools。
(ps:如果我错了,请指出来〜)
然后,我尝试这样:
1 - 使用sqlite。
2 - 制作一张桌子。
3 - 编写一个测试,将一些数据保存到表中。
4 - 尝试使用--keepdb
结果是可预测的:我没有看到文件或在控件工具中看到测试数据库或测试表。它可能是,测试数据库或表构建在内存中?
所以,问题如下:
1 - 如果我使用sqlite,我应该怎么做或更改设置,以便我可以保存我可以通过眼睛看到的测试数据?
答案 0 :(得分:1)
我混淆了参数--keepdb
的使用以及每种测试方法后删除数据的逻辑!
使用参数--keepdb
,这意味着在测试后不会删除数据库。但是如果我们没有在数据库的设置中设置'TEST':{'name':'dbname'}
,它将在内存中运行测试数据库,不会保存。
删除数据的逻辑将在每个名为' test_xxx_xxx()'的方法之后清理数据。
所以,他们是不同的。
mybe逻辑:
1 - 如果不存在,则创建测试数据库。
2 - 运行setup方法生成一些数据
3 - 执行名为" test_xxx_xxx"
的方法4 - 清理数据
然后,重复2,3,4直到所有测试方法都破灭
最终 - 删除测试数据库。