作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
根据有关测试的 Django 文档,--keepdb
标志将保留测试数据库以供将来运行。
https://docs.djangoproject.com/en/1.8/ref/django-admin/#django-admin-option---keepdb
需要明确的是,测试对数据库所做的任何更改(即:object.save()
)是否会自动重置?或者是否需要在测试中撤销这些更改?
最佳答案
如果您使用 Django 的默认 TestCase
,则所有测试都在事务中运行,该事务会在测试完成时回滚。如果您的数据库支持事务,则无需清理任何内容。
如果您使用 Django 的 LiveServerTestCase
或 TransactionTestCase
,则每次测试后所有表都会被截断,并且在测试之前序列化的初始数据将重新加载到测试数据库。这不会保留已迁移应用程序的任何数据,只会保留未迁移应用程序的数据。
--keepdb
选项不会对数据库执行任何特殊操作。它只是防止测试数据库被破坏,并且如果在测试开始时找到数据库,则使用该数据库而不是创建新数据库。因此,测试完成时以某种方式留在数据库中的任何数据都将被视为初始数据。如果某些错误或用户中断阻止没有事务的测试清理数据库,则这是最相关的。在这种情况下,重新创建数据库可能是个好主意。
关于Django 测试 : Does --keepdb reset changes made during tests?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31288353/
我是一名优秀的程序员,十分优秀!