为什么django要求我创建一个mysql数据库只是为了运行测试?

时间:2012-02-24 22:32:37

标签: django

当使用sqlite for django时,您可以从源代码控制中检出您的应用程序并运行单元测试,而无需执行任何特殊操作。但是当你切换到使用mysql作为你的数据库时,你突然需要创建一个数据库。为什么我需要这样做?这特别奇怪,因为单元测试甚至不会使用该数据库,而是通过在名称前加上'test _'来创建自己的数据库。

3 个答案:

答案 0 :(得分:1)

这是因为Django加载了settings.py文件以运行测试套件。您可以创建单独的settings.py文件,并在运行测试时使用它。以django网站为例:

--settings=test_sqlite

假设您有一个名为test_sqlite的settings.py文件。

请访问此处获取更多信息:

https://docs.djangoproject.com/en/dev/internals/contributing/writing-code/unit-tests/

答案 1 :(得分:1)

如果经常运行测试,请在settings.py中添加以下代码:

import sys

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

答案 2 :(得分:1)

我使用几乎相同的测试解决方案,比如@SimonBächler,而不是真正的数据库

'NAME': 'test', 

我用

'NAME':' :memory:,

因此它使用内存来处理测试操作,这就是为什么它并不总是创建/更新/删除数据库。