在内存数据库中运行带有sqlite的django

问题描述 投票:5回答:2

我正在使用Robot Framework进行验收测试。

要启动django服务器,我从RobotFramework运行python manage.py runserver命令。之后,我叫python manage.py migrate。但是测试很慢,因为没有使用内存数据库。

我尝试创建一个名为测试的新设置文件,并且使用以下配置:

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',
    }
}

并使用此配置在运行时设置环境变量DJANGO_SETTINGS_MODULE。

我先运行迁移,然后运行运行服务器,但是数据库不存在。我不知道为什么。如果我使用物理数据库,则可以使用。

我试图检查Django TestCase如何运行并创建数据库,但找不到。

django sqlite testing robotframework
2个回答
0
投票

您可能可以在测试开始时使用django.db.connection.creation.create_test_db功能documented here,然后在完成测试后调用django.db.connection.creation.destroy_test_db


0
投票

我尝试通过手动调用make migrate来运行测试用例之前模拟execute_from_command_line()。>>

因此,我选择的命令是:(如果不使用诗歌,则删除poetry run

poetry run ./manage.py test --settings=myproject.settings_test

我将此命令放入GNUMakefile中,以允许我使用make test

然后在myproject/settings_test.py内:

from .settings import *

ALLOWED_HOSTS = [ '127.0.0.1', ]
DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.sqlite3',
        'NAME': ':memory:',
    }
}

from django.core.management import execute_from_command_line
execute_from_command_line(['./manage.py', 'migrate'])
© www.soinside.com 2019 - 2024. All rights reserved.