2013-11-22 40 views
0

有沒有人知道如何使用特定的數據庫在Django單個測試?編輯:目前,我正在使用sqlite進行測試,但是,我想使用mysql數據庫進行特定測試(def test_benchmark ...),它將基準某些sql語句。如何在django中使用特定數據庫進行單個測試?

謝謝

+0

你說的*單一的測試意味着*? – mariodev

+0

如果您使用的是django testrunner,那麼您每次運行測試套件時都會建立並拆除測試數據庫。建立專門用於運行測試的數據庫是A Bad Idea™。 – ptr

+0

@PeteTinkler:除非你爲你的項目使用SQLite(這可能不是一個好主意,恕我直言)這個「測試數據庫設置/拆解」舞會真的減慢你的測試速度,而慢速的測試是一個非常糟糕的想法(tm) - 所以使用內存中的SQLite數據庫進行測試(以及您的真實引擎,Postgres或其他任何開發工具)最終可能不會是這樣的「壞主意」。除非你必須使用一些不被SQLite支持的特性來測試代碼......但是這是集成測試,而不是單元測試,不是嗎? –

回答

0

在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"}, 

    } 
} 
+0

而且?這是如何準確回答問題的? –

+0

settings.py中指定的特定數據庫。問題回答了。 – giogoice

+0

AOK。這應該是一個有用的答案? –

0

我不知道任何內置的方式來做到這一點 - 但我沒有誠實地尋找它。一個可能的(髒)黑客是檢查什麼在你的設置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', 
     } 
    } 
相關問題