運行django測試時創建一個臨時數據庫非常耗時,所以我有一個想法是爲django測試設置一個單獨的數據庫。可能嗎?如果是這樣,我該如何實現它?我可以爲django測試建立一個數據庫嗎?
更具體:我不想讓django創建一個新的數據庫並進行遷移並測試並銷燬每一次運行./manage.py測試。我希望它連接到一個現有的數據庫(當我已經創建用於測試)並完成所有工作。
運行django測試時創建一個臨時數據庫非常耗時,所以我有一個想法是爲django測試設置一個單獨的數據庫。可能嗎?如果是這樣,我該如何實現它?我可以爲django測試建立一個數據庫嗎?
更具體:我不想讓django創建一個新的數據庫並進行遷移並測試並銷燬每一次運行./manage.py測試。我希望它連接到一個現有的數據庫(當我已經創建用於測試)並完成所有工作。
運行測試時可以使用--keepdb
選項,以便數據庫在每次運行結束時不被銷燬。
./manage.py test --keepdb
我不確定如果我理解你的問題,但是當我在開發測試時,我只使用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進行測試,因爲它更快。
IMO,你應該總是在生產測試中使用相同類型的數據庫,以避免sqlite會讓任何問題通過。 –
@limelights確實。在這種情況下,我只需使用兩個不同的相同類型的數據庫,並在測試時更改settings.py中的數據庫。阿拉斯代爾的解決方案似乎更有效率。 – user2719875
不完全是我想要的,但足夠好 –