2012-04-28 76 views
11

我有一個使用本地PostgreSQL服務器的Django項目。 我正在使用調試器來調試我有的一些奇怪的錯誤。當調試器在其中一個測試中停止時,我試圖查看測試數據庫。我看到這個新的數據庫(test_project1),並且所有的方案都是按照它們應該定義的。但所有表都是空的。Django測試數據庫在測試運行時看起來爲空

我知道表格不是空的: - 我使用了夾具,一些測試已經運行並返回數據。 - 後測試創建新用戶返回201狀態代碼。

但是,當我嘗試使用pgAdmin3或psql訪問數據庫時,我看不到任何數據。

任何想法這裏發生了什麼? Django使用的是一種複雜的現金機制嗎?

回答

10

Django的TestCasewrapping every test in its own transaction。因此,只要通過ORM執行請求,您的數據庫就不會被使用。

+0

謝謝。只是想確保我不會丟失它...... :-) – Uzi 2012-04-29 10:08:56

+5

如果你想禁用事務,你可以暫時繼承TransactionTestCase而不是TestCase。這有點令人困惑:TestCase繼承自TransactionTestCase,但是「但是用一個事務包圍每個測試,猴子 - 修補真正的事務管理例程以便什麼都不做......」。儘管如此,這對於調試非常有用。是的,我也一樣,「我失去了它嗎?」時刻。您想使用TestCase而不是TransactionTestCase的原因是回滾事務比截斷表更快。 – 2014-12-01 22:35:36

相關問題