2013-09-30 32 views
1

我有一些從django.test.TestCase繼承的Django單元測試。這在使用默認數據庫時非常有用,因爲Django會在每次測試之間「重置」數據庫;也就是說,每個測試都是獨立運行的,並且在以前的測試中創建的數據庫對象不會影響當前的測試。如何在Django單元測試之間重置非默認數據庫?

但是,我已經開始使用第二個非默認數據庫,並且這個第二個數據庫不會像我所期望的那樣在測試之間重置。 Django提供了一種在單元測試之間重置非默認數據庫的方法嗎?如果沒有,我該如何重置該數據庫以保持我的測試獨立?

注意:我正在使用Django 1.4.5。如果在更新版本的Django中這一點發生了變化,我會很有興趣聽到它。

+0

什麼是默認數據庫?預先存在的數據? – Dave

+0

我正在使用SQLite進行測試。因此,在測試開始時會創建一個空的內存數據庫,並且應該在每次測試之間重置。我在每個測試中使用django-dynamic-fixture手動創建測試數據(這是一個錯誤的混亂,但不是這個問題的原因)。 – Buttons840

回答

2

在測試用例中使用multi_db選項。

因爲刷新操作可能很昂貴,Django只會刷新默認數據庫。但是,在測試用例中使用multi_db選項會指示Django刷新所有數據庫,而不僅僅是默認數據庫。

例如。來自Django文檔。

class TestMyViews(TestCase): 
    multi_db = True 

    def testIndexPageView(self): 
     call_some_test_code() 
+0

非常感謝 - 這有助於解決與其他測試涉及輔助數據庫時遇到的相關問題! – Jeeves

相關問題