运行命令“python manage.py test”时如何使用--keepdb?

时间:2017-12-01 03:28:58

标签: django

首先看到此页面: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,我应该怎么做或更改设置,以便我可以保存我可以通过眼睛看到的测试数据?

1 个答案:

答案 0 :(得分:1)

我混淆了参数--keepdb的使用以及每种测试方法后删除数据的逻辑!

使用参数--keepdb,这意味着在测试后不会删除数据库。但是如果我们没有在数据库的设置中设置'TEST':{'name':'dbname'},它将在内存中运行测试数据库,不会保存。

删除数据的逻辑将在每个名为' test_xxx_xxx()'的方法之后清理数据。

所以,他们是不同的。

mybe逻辑:

1 - 如果不存在,则创建测试数据库。

2 - 运行setup方法生成一些数据

3 - 执行名为" test_xxx_xxx"

的方法

4 - 清理数据

然后,重复2,3,4直到所有测试方法都破灭

最终 - 删除测试数据库。