我工作的公司有一个测试服务器,其中包含所有测试数据。我试图在测试服务器上添加一些引用我们的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',
}
}
}
答案 0 :(得分: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