有沒有人知道如何使用特定的數據庫在Django單個測試?編輯:目前,我正在使用sqlite進行測試,但是,我想使用mysql數據庫進行特定測試(def test_benchmark ...),它將基準某些sql語句。如何在django中使用特定數據庫進行單個測試?
謝謝
有沒有人知道如何使用特定的數據庫在Django單個測試?編輯:目前,我正在使用sqlite進行測試,但是,我想使用mysql數據庫進行特定測試(def test_benchmark ...),它將基準某些sql語句。如何在django中使用特定數據庫進行單個測試?
謝謝
在Django中,您在settings.py文件中設置了數據庫。配置應該是這樣的:
DATABASES = {
'default': {
'NAME': 'db_name',
'ENGINE': 'sql_server.pyodbc',
'HOST': 'server',
'USER': 'django',
'PASSWORD': 'django',
'OPTIONS' : { "use_mars" : False,
"provider" : "SQLNCLI10",
"extra_params" : "MARS Connection=True"},
}
}
我不知道任何內置的方式來做到這一點 - 但我沒有誠實地尋找它。一個可能的(髒)黑客是檢查什麼在你的設置sys.argv
(這是另一個Python模塊),並有一個備用數據庫設置爲特定的測試,即:
# settings.py
import os, sys
DATABASES = {
'default': {
'NAME': 'db_name',
'ENGINE': 'your.engine',
'HOST': 'server',
'USER': 'django',
'PASSWORD': 'django',
}
}
if "test" in sys.argv and "your-test-name" in sys.argv:
DATABASES = {
'default': {
'NAME': 'other_db_name',
'ENGINE': 'your.engine',
'HOST': 'server',
'USER': 'django',
'PASSWORD': 'django',
}
}
你說的*單一的測試意味着*? – mariodev
如果您使用的是django testrunner,那麼您每次運行測試套件時都會建立並拆除測試數據庫。建立專門用於運行測試的數據庫是A Bad Idea™。 – ptr
@PeteTinkler:除非你爲你的項目使用SQLite(這可能不是一個好主意,恕我直言)這個「測試數據庫設置/拆解」舞會真的減慢你的測試速度,而慢速的測試是一個非常糟糕的想法(tm) - 所以使用內存中的SQLite數據庫進行測試(以及您的真實引擎,Postgres或其他任何開發工具)最終可能不會是這樣的「壞主意」。除非你必須使用一些不被SQLite支持的特性來測試代碼......但是這是集成測試,而不是單元測試,不是嗎? –