Django测试完成后如何保存测试数据?

时间:2015-05-28 10:33:08

标签: python django django-testing

我正在使用Django 1.8和the docs说使用--keepdb来保存测试数据库。

我正在这样做并且数据库在那里,但每次我看到它时,它都是空的并且没有数据。

我有什么方法可以保留它,以便我可以看到那里有什么?

1 个答案:

答案 0 :(得分:14)

所有代码都在数据库事务中运行,并在每次测试结束时回滚。

来自Django testing docs

  

这是一个来自django.test.TestCase的子类的示例,它是unittest.TestCase的子类,它在事务中运行每个测试以提供隔离:

这种“隔离”意味着您在测试中 内的任何内容都将在下一次测试开始之前回滚。

相反,您希望使用Python的类unittest.TestCase

Django文档的另一个引用:

  

使用unittest.TestCase可以避免在事务中运行每个测试并刷新数据库的成本,但如果测试与数据库交互,则其行为将根据测试运行器执行它们的顺序而有所不同。这可能导致单独测试在隔离运行时通过,但在套件中运行时会失败。

只要你能保证你的测试不会破坏彼此的数据,你就可以安全地使用这个类而不是Django的测试用例。