如何使用测试sqlite3数据库而不是默认的mysql数据库来测试django?

问题描述 投票:0回答:1

settings.py 中的我的数据库

'default': {
    'ENGINE': 'django.db.backends.mysql',
    'NAME': 'dbname',
    'USER': 'user',
    'PASSWORD': 'password',
    'HOST': 'mydb.com',
    'TEST': {                                        # it's not works
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',
    }
}

但是测试部分不起作用。

我使用这个代码并且它有效,但我不喜欢它。也许数据库部分还有其他方式描述测试数据库?

if 'test' in sys.argv:
    DATABASES['default'] = {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',
    }
django django-testing django-settings
1个回答
0
投票

创建一个新文件 your_app/test_settings.py

from .settings import *
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': BASE_DIR / 'db.sqlite3',
    }
}

不要忘记使用新设置运行迁移

python manage.py migrate --settings=your_app.test_settings

最后,使用新的 test_settings.py 运行测试

python manage.py test --settings=your_app.test_settings

© www.soinside.com 2019 - 2024. All rights reserved.