我有两个站点:A和B。A依赖于B的一些表,因此它的DATABASES
设置中有一个指向B的条目,以及DATABASE_ROUTERS
设置下的一些条目,以将某些模型访问路由到B的数据库。
现在我正试图在a上编写一个测试,但仅仅运行manage.py test
就立即失败了,因为a的一些模型依赖于来自B的表所覆盖的一些模型,而B的完整数据库表还没有创建。
所以我的问题是,我如何调整我的TEST_RUNNER
,使其首先在B上根据B的测试数据库运行syncdb
,这样当我在A上运行manage.py test
时,它就可以从B中找到它所依赖的表?
我希望这是有道理的。
如果您的测试不能将所有数据都放在一个数据库中(例如,为测试设置不同的路由器),那么您应该考虑创建自己的TEST_RUNNER
。也许这会给你指明正确的方向!
我终于运行了测试,下面是我所做的:
- 运行测试时禁用
DATABASE_ROUTERS
设置 - 在
DATABASES
设置中维护B别名,但名称与A相同 - 将不存在的B的
INSTALLED_APPS
附加到A的INSTALLED_APPS