在对类的静态元素进行查询时,Django测试会使用生产数据库,为什么会发生这种情况?

时间:2018-11-09 17:31:02

标签: django testing

我有两个数据库,一个用于Django(app_db),另一个是只读的,没有Django(remote_db)。

我定义了我的自定义路由器(db_for_readdb_for_writeallow_relation),并与用于处理数据的应用(模块)一起使用时选择了正确的路由器(包括测试。此外,remote_db可以自己迁移。

发行版应用程序和数据库:
-具有模型类 News,NewsCategoryClassifier 的应用程序 news_module ,请使用app_db。
-具有模型类类别的应用 categories_module ,请使用remote_db。

My Setting:

DATABASE_ROUTERS = ['src.core.router.MyCustomRouter']
DATABASES = {
    'default': env.db('APP_DB'),

    'remote_db': env.db('REMOTE_DB')
}

我的测试:

class CategoriesClassifierTest(TestCase):
def test_instance_have(self):
    Category.object.create(name='Sports')
    Category.object.create(name='Financials')

    cl = NewsCategoryClassifier()

    self.assertIsInstance(cl, NewsCategoryClassifier)
    self.assertEquals(['Sports', 'Financials'], cl.choices)

这按预期工作。

class NewsCategoryClassifier:
    def __init__(self):
        self.choices = Categories.objects.all()

但是当我运行涉及对类属性的查询的测试时,我从生产数据库中获取数据。

    class NewsCategoryClassifier:
        choices = Categories.objects.all()

我想知道如何从NewsCategoryClassifier测试test_remote_db中的数据。我不知道是否可以通过创建自定义TestRunner来提出解决方案。

0 个答案:

没有答案