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

时间:2010-11-14 22:21:21

标签: django unit-testing multiple-databases

我正在使用django 1.2,我必须在我的网站上设置第二个数据库 项目。一旦我设置了第二个连接和我的路由器 项目,我的所有测试用例,甚至没有提到那个 数据库开始失败。运行应用程序正常,syncdb 工作正常,只是我正在进行的测试(单元测试) 问题。

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

支持吗?

1 个答案:

答案 0 :(得分: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

并在settings.py中:

DATABASE_ROUTERS = ['otherapp.dbrouter.CustomDbRouter', 'project.dbrouter.DefaultRouter']