2013-06-28 19 views
0

我最近使用普通的舊測試使用WebTest的切換,這種「沒有數據庫測試運行」我的測試如何不影響數據庫...?

from django.test.simple import DjangoTestSuiteRunner 

class NoTestDbDatabaseTestRunner(DjangoTestSuiteRunner): 
    def setup_databases(self, **kwargs): 
     pass 

    def teardown_databases(self, old_config, **kwargs): 
     pass 

下面是其中有以某種方式進入數據庫的實例測試...

發生了什麼?我的測試是否觸及數據庫但回滾到某個舊狀態?測試測試我可以看到每個創建的列表都有一個遞增的ID。

def test_image_upload(self): 
     form_data = self.listing_form_defaults.copy() 
     form_data['images-TOTAL_FORMS'] = '3' 

     upload_files = [ 
      ('images-0-image', 'testdata/1.png'), 
      ('images-1-image', 'testdata/2.png'), 
      ('images-2-image', 'testdata/3.png'), 
     ] 

     form_resp = self.app.post(
      reverse('listing_create'), 
      form_data, 
      upload_files=upload_files, 
      user='kmike' 
     ).follow() 

     assert len(form_resp.context['listing'].images.all()) == 3 

form_resp.context['listing'].images.all()必須進入數據庫,我print倒是它,它從我的數據庫有數據庫記錄。

我只是困惑 - 我的測試運行速度快,似乎並沒有真正改變我的數據庫,這是如何工作/發生?!

+0

Django是開源的。深入代碼,我敢打賭,這是非常明顯的。 –

+0

什麼部分的代碼............? –

回答

0

需要數據庫(即模型測試)的測試不會使用您的「真實」(生產)數據庫。爲測試創建單獨的空白數據庫。

Here

+0

未創建測試數據庫。我的測試需要大約1秒鐘,他們過去需要2分鐘+! –