【问题标题】:How can I keep test data after Django tests complete?Django 测试完成后如何保留测试数据?
【发布时间】:2015-08-10 19:29:26
【问题描述】:

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

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

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

【问题讨论】:

  • 你在使用基于事务的测试吗?
  • @ThaneBrimhall 他们是简单的测试,我正在使用TestCase
  • 啊哈。答案即将到来。

标签: python django django-testing


【解决方案1】:

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

来自Django testing docs

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

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

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

另一个来自 Django 文档的引用:

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

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

【讨论】:

    猜你喜欢
    • 2011-09-23
    • 2011-06-04
    • 1970-01-01
    • 1970-01-01
    • 2019-10-04
    • 1970-01-01
    • 2015-10-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多