簡體   English   中英

如何針對特定數據庫進行測試

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM