5

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

在我看来,第二个数据库从未创建过,即使我手动将其创建为 (test_mydbname) 它仍然失败。

这支持吗?

4

1 回答 1

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']
于 2015-05-22T09:11:31.983 回答