1

我的数据库设置是

DATABASES = {
    'default': {
        'ENGINE': 'django.db.backends.mysql',
        'NAME': 'foo',
...

当我运行“django-admin.py test ...”时,一个名为test_foo的 MySQL 数据库被创建并随后被销毁,但在测试期间它没有被填充。

如果我在测试中打开一个 shell,我可以使用 Django 模型访问创建的对象,但创建的 MySQL 数据库不包含它们。

我希望测试使用 MySQL 以防 MySQL 出现特定问题,但我看不到任何明显的方法来做到这一点。

我假设数据库当前正在内存中创建,我看不出如何轻松计算出正在使用的数据库。我假设它不是 MySQL,因为我无法使用 MySQL 管理工具看到它。

如果我可以指示测试使用他们已经创建的 MySQL 数据库(test_foo)并再次返回到当前数据库(内存中的 sqlite?),这样如果怀疑 MySQL 特定问题,我可以使用测试重现它。 .

有谁知道我如何控制这种行为(希望没有专门化我自己的测试运行器)?

4

1 回答 1

0

您可以按照Django 的两个勺子中的多个设置文件章节,拆分您的设置文件,每个文件使用不同的数据库引擎。然后使用设置选项:

django-admin.py test --settings=project.settings_test
django-admin.py test --settings=project.settings_test_mysql

请参阅此 repo,了解如何处理设置文件。

- 更新 -

这就是测试的settings_test样子:

from .settings import *

DEBUG = False
TEMPLATE_DEBUG = DEBUG

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

SOUTH_TESTS_MIGRATE = False

和 mysql 类似,只需使用 mysql db 设置。

于 2013-11-07T08:56:59.990 回答