2014-11-14 75 views
2

我不明白FactoryBoy + Django中的teardown是如何工作的。FactoryBoy:如何拆卸?

我有這樣一個測試用例:

class TestOptOutCountTestCase(TestCase): 
    multi_db = True 

    def setUp(self): 
     TestCase.setUp(self) 
     self.date = datetime.datetime.strptime('05Nov2014', '%d%b%Y') 
     OptoutFactory.create(p_id=1, cdate=self.date, email='[email protected]', optin=1) 

    def test_optouts2(self): 
     report = ReportOptOutsView() 
     result = report.get_optouts() 
     self.assertEqual(len(result), 1) 
     self.assertEqual(result[0][5], -1) 

setUp是正確的所有測試運行一次?現在,如果我在進行第二次測試之前需要一個乾淨的狀態,我該如何實現這一目標?謝謝

回答

3

如果我正確理解你,在這種情況下你不需要tearDown,因爲在每次測試之間重置數據庫是default behaviourTestCase

參見:

在每個測試用例的開始,設置()之前運行,Django會刷新數據庫,該數據庫恢復到它在遷移被稱爲直接後的狀態。

...

這沖洗/加載程序重複測試情況下,每個測試,所以你可以肯定的是,測試的結果將不會被另一個測試受到影響,通過測試執行的順序。

還是你的意思是通過OutputFactory限制創建實例到某些測試?

那麼你可能不應該將實例的創建放入setUp

或者您創建TestCase的兩個變體,一個用於所有依賴工廠的測試,另一個用於那些不需要的測試。


關於tearDown支票的用途這樣的回答:Django when to use teardown method