Django 测试 - 我只想创建一个数据库 - 如何指定

Posted

技术标签:

【中文标题】Django 测试 - 我只想创建一个数据库 - 如何指定【英文标题】:Django Testing - I only want one of my databases created - how to specify 【发布时间】:2012-05-20 04:28:45 【问题描述】:

所以在我的 settings.py 中我指定了两个数据库连接(见下文)。

但是当我运行测试时,我只想让 Django 创建“默认”数据库。

有没有办法做到这一点?我尝试添加 TEST_CREATE: False 选项,但我猜出于某种原因这仅适用于 Oracle?

我的 settings.py sn-p:

DATABASES = 
    'default': 
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'App1',                      # Or path to database file if using sqlite3.
        'USER': 'webaccess',                      # Not used with sqlite3.
        'PASSWORD': '***',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
    ,
    'default_root': 
        'ENGINE': 'django.db.backends.mysql', # Add 'postgresql_psycopg2', 'postgresql', 'mysql', 'sqlite3' or 'oracle'.
        'NAME': 'App1',                      # Or path to database file if using sqlite3.
        'USER': 'django',                      # Not used with sqlite3.
        'PASSWORD': '****',                  # Not used with sqlite3.
        'HOST': '',                      # Set to empty string for localhost. Not used with sqlite3.
        'PORT': '',                      # Set to empty string for default. Not used with sqlite3.
        'TEST_CREATE': False            #Don't create when testing
    


【问题讨论】:

也许在设置中查看 sys.argv[1] 以查看您是否处于测试模式,并相应地设置数据库。 【参考方案1】:

嗯,这是一种方法。在设置了我的普通数据库后,我将它添加到了 settings.py 中。

if 'test' in sys.argv:
    DATABASES = 'default': 'ENGINE': 'django.db.backends.sqlite3',

【讨论】:

以上是关于Django 测试 - 我只想创建一个数据库 - 如何指定的主要内容,如果未能解决你的问题,请参考以下文章

冻结数据库以测试 Django 中的新功能

我想向 django admin 创建一个通知

如何跳过 Django 中的单元测试?

如果我只想以线程安全的方式测试和设置标志,那么线程类是啥?

无法将特定步骤保存为测试片段

基于设置的 Django Pytest 测试 URL