2015-10-18 44 views
0

運行django測試時創建一個臨時數據庫非常耗時,所以我有一個想法是爲django測試設置一個單獨的數據庫。可能嗎?如果是這樣,我該如何實現它?我可以爲django測試建立一個數據庫嗎?

更具體:我不想讓django創建一個新的數據庫並進行遷移並測試並銷燬每一次運行./manage.py測試。我希望它連接到一個現有的數據庫(當我已經創建用於測試)並完成所有工作。

回答

4

運行測試時可以使用--keepdb選項,以便數據庫在每次運行結束時不被銷燬。

./manage.py test --keepdb 
+0

不完全是我想要的,但足夠好 –

0

我不確定如果我理解你的問題,但是當我在開發測試時,我只使用SQLite。 SQLite是我的測試數據庫。當我把它用於生產時,我使用PostgreSQL。這是當我在開發測試我的settings.py:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.sqlite3', 
     'NAME': os.path.join(BASE_DIR, 'db.sqlite3'), 
    } 
} 

我曾經使用PostgreSQL的測試以及(我切換到SQLite的,因爲它是更快的設置)。

如果我與PostgreSQL的測試,我的settings.py應該是這樣的:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'TESTDB', 
     'USER': 'mydatabaseuser', 
     'PASSWORD': 'mypassword', 
     'HOST': '127.0.0.1', 
     'PORT': '5432', 
    } 
} 

,當我沒有測試,我會使用這樣的:

DATABASES = { 
    'default': { 
     'ENGINE': 'django.db.backends.postgresql_psycopg2', 
     'NAME': 'ProductionDB', 
     'USER': 'mydatabaseuser', 
     'PASSWORD': 'mypassword', 
     'HOST': '127.0.0.1', 
     'PORT': '5432', 
    } 
} 

就像我前面提到過,我開始使用SQLite進行測試,因爲它更快。

+2

IMO,你應該總是在生產測試中使用相同類型的數據庫,以避免sqlite會讓任何問題通過。 –

+0

@limelights確實。在這種情況下,我只需使用兩個不同的相同類型的數據庫,並在測試時更改settings.py中的數據庫。阿拉斯代爾的解決方案似乎更有效率。 – user2719875

相關問題