mysql - 如何让 django 1.5 测试使用 mysql?

标签 mysql django testing

我的数据库设置是

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/

相关文章:

php - mysqli select 查询不能正常工作

java - 在测试 : Argument [RedirectAttributes] is of type Model or Map but is not assignable from the actual model. 你可能需要

testing - 回归测试和部署策略

php - PDO setFetchMode 的 Codeigniter 替代方案

mysql - 在 mysql 查询中调用了多少次诸如 NOW() 之类的函数

javascript - Django 运行从父级导入并由子级调用的 javascript 函数

python - 一个接一个地运行 django 迁移

python - Django 获取列表中的未知列

node.js - Testcafe:找不到资源的 dns 记录

javascript - express.js get 方法无法获取 req.body 值