【发布时间】:2017-02-23 15:25:04
【问题描述】:
我工作的公司有一个测试服务器,其中包含所有测试数据。我正在尝试添加一些非常需要的单元测试,这些单元测试引用了测试服务器上的 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
虽然它进入了 this if 语句,但在运行 python manage.py test 时仍然会创建测试数据库。有什么建议吗? FWIW 到目前为止,我所有的测试都在使用 DRF 及其 APITestCase 类。谢谢!
编辑:
我试过跑步 python 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',
}
}
}
【问题讨论】:
-
您可以设置该现有数据库的镜像,如documentation here中所示
-
对于 1.8+,您可以使用
--keepdb标志 stackoverflow.com/a/37100979/4724196 -
@Neelik 我也试过了,但也没有用。
标签: django django-rest-framework