根据有关测试的 Django 文档,该--keepdb
标志将保留测试数据库以供将来运行。
https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-option---keepdb
为了清楚起见,测试(即:)对数据库所做的任何更改是否object.save()
会自动重置?还是需要从测试中撤消这些更改?
根据有关测试的 Django 文档,该--keepdb
标志将保留测试数据库以供将来运行。
https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-option---keepdb
为了清楚起见,测试(即:)对数据库所做的任何更改是否object.save()
会自动重置?还是需要从测试中撤消这些更改?
如果您使用 Django 的 default TestCase
,所有测试都在一个事务中运行,当测试完成时会回滚。如果您的数据库支持事务,则您无需清理任何内容。
如果您使用 Django 的LiveServerTestCase
or TransactionTestCase
,则每次测试后都会截断所有表,并且在测试之前序列化的初始数据将重新加载到测试数据库中。这不会为已迁移的应用程序保留任何数据,只会为未迁移的应用程序保留任何数据。
该--keepdb
选项不会对数据库做任何特殊的事情。它只是防止测试数据库被破坏,如果在测试开始时找到数据库,则使用它而不是创建新数据库。因此,测试完成时以某种方式留在数据库中的任何数据都将被视为初始数据。如果某些错误或用户中断阻止没有事务的测试清理数据库,这主要是相关的。在这种情况下,重新创建数据库可能是个好主意。