2011-01-05 60 views
13

我希望能夠使用現有的測試數據庫來運行我的測試,並且在每次我想運行測試時都沒有Django創建和刪除數據庫。這可能嗎?我怎樣才能指定一個數據庫的Django測試使用,而不是讓它每次構建它?

+0

你爲什麼要這麼做?你也想測試數據庫的創建... – 2011-01-05 16:55:45

+6

不需要花費數小時才能建立。 – 2011-01-05 17:12:51

+0

您可以選擇不同的數據庫引擎進行測試(sqlite有更快的數據庫創建方式) – 2011-01-06 12:47:54

回答

14

這是可能的,這裏有一個辦法:

1)定義你自己的測試運行看here怎麼看。

2)對於您的自定義測試運行看在default test runner,你可以複製和過去的代碼,只是註釋此行:connection.creation.destroy_test_db(old_name, verbosity)負責銷燬測試數據庫,我覺得你應該把connection.creation.create_test_db(..)線除了這樣的事情也許一試:

try: 
    # Create the database the first time. 
    connection.creation.create_test_db(verbosity, autoclobber=not interactive) 
except ..: # Look at the error that this will raise when create a database that already exist 
    # Test database already created. 
    pass 

3)勢必setting.py TEST_RUNNER到您的測試運行。

4)現在運行測試是這樣的:./manage.py測試

+0

所以這看起來不錯,但我仍然需要建立連接到本地測試數據庫沒有? – 2011-01-05 21:08:05

+0

@Ryan Detzel:我剛剛編輯了我的答案,以獲取更多細節,關於你的問題,我認爲測試數據庫上面的代碼將在第一次運行測試時創建是的,這個測試數據庫是由Django自動創建的: http://docs.djangoproject.com/zh/dev/topics/testing/?from=olddocs#the-test-database – mouad 2011-01-05 21:39:10

+0

@mouad,我可以配置它,使它甚至不會加載燈具/沖洗它嗎? – 2013-07-16 21:35:42

6

誰在使用Django> = 1.8

python manage.py test --keepdb 

--keepdb果脯測試運行的測試數據庫。這具有跳過創建和銷燬操作的優點,這可以大大縮短運行測試的時間,尤其是在大型測試套件中。如果測試數據庫不存在,它將在第一次運行時創建,然後爲每次後續運行保留。在運行測試套件之前,任何未應用的遷移也將應用於測試數據庫。

+0

Django 1.6怎麼樣?有沒有類似的方法? – 2016-08-18 06:57:05

相關問題