Django测试多数据库与自动路由

时间:2011-06-30 20:31:23

标签: django django-testing django-orm

简单问题 - 我正在multi-db成功使用automatic routing设置,如遗留数据库(非托管)中所述。现在我想测试它。我已经设置了一个测试人员绕过managed problem并且我可以确认我正在创建数据库并且正如预期的那样。

我的问题是数据库路由仍在尝试查看非测试数据库。如何设置我的routers.py文件,以便在测试模式和任何其他时间的非测试数据库中查看test_数据库。

应该很简单,但是我在这个墙上敲打着我的头。

FWIW:

class PmCatalogRouter(object):
    """A router to control all database operations on models in
    the PmCatalog application"""

    def db_for_read(self, model, **hints):
        "Point all operations on pmCatalog models to 'catalog'"
        if model._meta.app_label == 'pmCatalog':
            return 'catalog'
        return None

    def db_for_write(self, model, **hints):
        "Point all operations on pmCatalog models to 'catalog'"
        if model._meta.app_label == 'pmCatalog':
            return 'catalog'
        return None

    def allow_syncdb(self, db, model):
        "Make sure the pmCatalog app only appears on the 'catalog' db"
        if db == 'catalog':
            return model._meta.app_label == 'pmCatalog'
        elif model._meta.app_label == 'pmCatalog':
            return False
        return None

非常欣赏这个额外的眼球;)

由于

1 个答案:

答案 0 :(得分:3)

好的 - 所以这就是发生的事情。事实证明它一直在完全正常工作,但是两个不同的问题导致我的测试无法通过。在这种情况下,我正在针对遗留方法测试django查询方法。我没有通过我的测试,因为遗留方法没有查看测试数据库而是查看原始数据库。我解决了这个问题然后我意识到在testrunner中没有创建的程序。

一旦这两个问题得到纠正,一切都神奇地落在一起......

某人HTH。