我有一个使用本地PostgreSQL服务器的Django项目。 我正在使用调试器来调试我遇到的一些奇怪的错误。当调试器在其中一个测试中停止时,我试着查看测试数据库。我看到这个新数据库(test_project1),并且所有方案都按照它们应该定义。但所有表都是空的。
我知道这些表不是空的: - 我使用了夹具,一些测试已经运行并返回数据。 - 后测试创建新用户返回201状态代码。
然而,当我尝试使用pgAdmin3或psql访问数据库时,我看不到任何数据。
知道这里发生了什么吗? 是否存在Django使用的某种复杂的现金机制?
答案 0 :(得分:12)
Django的TestCase
是wrapping every test in its own transaction。因此,只要您通过ORM执行请求,就不会使用您的数据库。
答案 1 :(得分:0)
可以通过继承django.test.TestCase
而不是django.test.TransactionTestCase
来避免TestCase
正在使用的数据库事务。然后数据将在数据库中可见。
您可能只想在调试时临时执行此操作,以便在其余时间内获得django.test.TestCase
的性能优势。
Django文档:
django.test.TransactionTestCase
django.test.TestCase