我的数据库设置是
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 特定问题我可以重现它,那就太好了使用测试。
有谁知道我如何控制这种行为(希望不需要专门化我自己的测试运行程序)?
最佳答案
您可以按照 Django 的两勺 中的多个设置文件 章节拆分您的设置文件,每个文件使用不同的数据库引擎。然后使用设置选项:
django-admin.py test --settings=project.settings_test
django-admin.py test --settings=project.settings_test_mysql
请引用this 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 数据库设置即可。
关于mysql - 如何让 django 1.5 测试使用 mysql?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19828032/