Python 如何在django中为单个测试使用特定数据库?
有人知道如何在Django中使用特定数据库进行单个测试吗 编辑:目前,我正在使用sqlite进行测试,但是,我想使用mysql数据库进行特定的测试(def test_benchmark…),它将对一些sql语句进行基准测试Python 如何在django中为单个测试使用特定数据库?,python,django,testing,tdd,Python,Django,Testing,Tdd,有人知道如何在Django中使用特定数据库进行单个测试吗 编辑:目前,我正在使用sqlite进行测试,但是,我想使用mysql数据库进行特定的测试(def test_benchmark…),它将对一些sql语句进行基准测试 谢谢在Django中,您可以在settings.py文件中设置数据库。配置应如下所示: DATABASES = { 'default': { 'NAME': 'db_name', 'ENGINE': 'sql_server.pyodbc
谢谢在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"},
}
}
我不知道有什么内在的方法可以做到这一点,但我也没有诚实地寻找它。一个可能的(肮脏的)黑客是检查设置中的
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',
}
}
您所说的单一测试是什么意思?如果您使用的是django testrunner,那么每次运行测试套件时,它都在构建和拆除测试数据库。专门设置一个数据库来运行测试是个坏主意™.@Petertinkler:除非您在项目中使用SQLite(这可能不是一个好主意,IMHO),否则这种“测试数据库设置/拆卸”舞蹈确实会减慢您的测试速度,而减慢单元测试速度是一个非常糟糕的主意(tm)——因此使用内存中的SQLite db进行测试(以及您真正的引擎,Postgres或其他什么,用于开发人员)可能不是一个“坏主意”最后当然,除非您必须使用SQLite不支持的某些功能测试代码。。。但这是集成测试,而不是单元测试,不是吗?这是如何准确回答问题的?在settings.py中指定的特定数据库。问题回答:好的。这应该是一个有用的答案?你可以把它和