我有两个数据库,一个用于Django(app_db),另一个是只读的,没有Django(remote_db)。
我定义了我的自定义路由器(db_for_read
,db_for_write
,allow_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来提出解决方案。