Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/django/19.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何在django中为单个测试使用特定数据库?_Python_Django_Testing_Tdd - Fatal编程技术网

Python 如何在django中为单个测试使用特定数据库?

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中使用特定数据库进行单个测试吗

编辑:目前,我正在使用sqlite进行测试,但是,我想使用mysql数据库进行特定的测试(def test_benchmark…),它将对一些sql语句进行基准测试


谢谢

在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中指定的特定数据库。问题回答:好的。这应该是一个有用的答案?你可以把它和