2017-02-23 63 views
0

我工作的公司有一臺測試服務器,它包含所有測試數據。我正在嘗試添加一些在測試服務器上引用我們的Django數據庫的單元測試。我遇到的問題是正在創建測試數據庫,而不是指向我提供的數據庫。我試過,如果測試系統中的參數是這樣設置的數據庫:如何根據特定數據庫進行測試

if 'test' in sys.argv: 
    DATABASES = { 
     'default': { # VM Testing 
      'ENGINE': 'sql_server.pyodbc', 
      'NAME': 'x', 
      'USER': 'x', 
      'PASSWORD': "x", 
      'HOST': 'x.x.x.x', # 
      'PORT': '', 
      'OPTIONS': { 
       'driver': 'FreeTDS', 
       'dsn': 'mssql_staging_1', 
       'extra_params': 'TDS_VERSION=8.0', 
       'use_legacy_datetime': False 
      }, 
     }, 
    } 

    DEBUG = False 
    TEMPLATE_DEBUG = False 

雖然這使得它成爲了這個if語句,運行蟒蛇manage.py測試時,仍將創建測試數據庫。有什麼建議? FWIW我所有的測試都使用DRF和APITestCase類。謝謝!

編輯:

我試圖運行 蟒蛇manage.py測試-k 但Django是仍在使用默認的測試數據庫。我扔了一個設定的軌跡來檢查,沒有發現任何物體。 端子輸出爲:

Using existing test database for alias 'default'... 

這是我更新的更新設置:

DATABASES = { 
    'default': { 
     'ENGINE': 'sql_server.pyodbc', 
     'NAME': 'x', 
     'USER': 'x', 
     'PASSWORD': "x", 
     'HOST': 'x.x.x.x', 
     'PORT': '', 
     'OPTIONS': { 
      'driver': 'FreeTDS', 
      'dsn': 'mssql_staging_1', 
      'extra_params': 'TDS_VERSION=8.0', 
      'use_legacy_datetime': False 
     } 
    }, 
    'replica': { 
     'ENGINE': 'sql_server.pyodbc', 
     'NAME': 'x', 
     'USER': 'x', 
     'PASSWORD': "x", 
     'HOST': 'x.x.x.xreplica', 
     'PORT': '', 
     'OPTIONS': { 
      'driver': 'FreeTDS', 
      'dsn': 'mssql_staging_1', 
      'extra_params': 'TDS_VERSION=8.0', 
      'use_legacy_datetime': False 
     }, 
     'TEST': { 
      'MIRROR': 'default', 
     } 
    } 
} 
+1

你可以設置一個現有數據庫的鏡像,如圖所示[文檔這裏(在https://docs.djangoproject.com/ en/1.9/topics/testing/advanced /#testing-primary-replica-configurations) – Neelik

+1

for 1.8+您可以使用'--keepdb'標誌http://stackoverflow.com/a/37100979/4724196 – HassenPy

+0

@Neelik I也嘗試過,但也沒有奏效。 –

回答

1

我終於能夠這樣做,讓我的測試運行工作如下:

我感動測試條件從我的分段設置文件到測試設置文件(稱爲testing.py)

數據庫設置:

if 'test' in sys.argv: 
    # WILL NOT WORK WHEN IF IS MISSING 
    DATABASES = { 
     'default': { # VM Testing 
      'ENGINE': 'sql_server.pyodbc', 
      'NAME': 'x', 
      'USER': 'x', 
      'PASSWORD': "x", 
      'HOST': 'x.x.x.x', 
      'PORT': '', 
      'OPTIONS': { 
       'driver': 'FreeTDS', 
       'dsn': 'mssql_staging_1', 
       'extra_params': 'TDS_VERSION=8.0', 
       'use_legacy_datetime': False 
      }, 
      'TEST': { 
       'MIRROR': 'default', 
      } 

     }, 
    } 

,跑到我用下面的命令測試:

python manage.py test --settings=Project.settings.testing -k 
相關問題