我正在使用Django 1.8和the docs说使用--keepdb
来保存测试数据库。
我正在这样做并且数据库在那里,但每次我看到它时,它都是空的并且没有数据。
我有什么方法可以保留它,以便我可以看到那里有什么?
答案 0 :(得分:14)
所有代码都在数据库事务中运行,并在每次测试结束时回滚。
这是一个来自django.test.TestCase的子类的示例,它是unittest.TestCase的子类,它在事务中运行每个测试以提供隔离:
这种“隔离”意味着您在测试中 内的任何内容都将在下一次测试开始之前回滚。
相反,您希望使用Python的类unittest.TestCase
。
Django文档的另一个引用:
使用unittest.TestCase可以避免在事务中运行每个测试并刷新数据库的成本,但如果测试与数据库交互,则其行为将根据测试运行器执行它们的顺序而有所不同。这可能导致单独测试在隔离运行时通过,但在套件中运行时会失败。
只要你能保证你的测试不会破坏彼此的数据,你就可以安全地使用这个类而不是Django的测试用例。