[英]How to test against specific database
我工作的公司有一個測試服務器,里面存放着所有的測試數據。 我正在嘗試添加一些非常需要的單元測試,這些單元測試在測試服務器上引用了我們的 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 語句,但在運行 python manage.py test 時仍然會創建測試數據庫。 有什么建議嗎? FWIW 到目前為止我所有的測試都使用 DRF 及其 APITestCase 類。 謝謝!
編輯:
我嘗試運行 python manage.py test -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',
}
}
}
通過執行以下操作,我終於能夠讓我的測試運行器工作:
我將測試條件從暫存設置文件移動到測試設置文件(稱為 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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.