django测试框架是否支持多个数据库?

use*_*404 5 django unit-testing multiple-databases

我正在使用django 1.2,我不得不在我的项目上设置第二个数据库.一旦我在我的项目中设置第二个连接和路由器,我甚至没有引用第二个数据库的所有测试用例都开始失败.运行应用程序工作正常,syncdb工作正常,只是我遇到问题的测试(单元测试).

在我看来,永远不会创建第二个数据库,即使我手动创建(test_mydbname)它仍然失败.

这支持吗?

ben*_*kji 1

我必须添加一个 DefaultRouter,然后我的测试再次开始工作。似乎在测试场景中,django 不知道“默认”数据库。所有信息,包括测试数据库创建顺序:https://docs.djangoproject.com/en/dev/topics/testing/advanced/#tests-and-multiple-databases

这是我的默认路由器(django 1.7,但不太确定allow_relation和allow_migrate

class DefaultRouter(object):
    """
    A router for the default db. add last in settings
    """

    db_label = 'default'

    def db_for_read(self, model, **hints):
        return self.db_label

    def db_for_write(self, model, **hints):
        return self.db_label

    def allow_relation(self, obj1, obj2, **hints):
        return True

    def allow_migrate(self, db, app_label, model=None, **hints):
        return True
Run Code Online (Sandbox Code Playgroud)

在settings.py中:

DATABASE_ROUTERS = ['otherapp.dbrouter.CustomDbRouter', 'project.dbrouter.DefaultRouter']
Run Code Online (Sandbox Code Playgroud)