我有两个我的网站使用的数据库,我有一个使用它们的应用程序。我需要编写一个TestCase来为两个数据库加载fixture。我使用的是数据库路由器,它在生产中运行良好,但在测试框架中,Django坚持对所有灯具使用“默认”数据库,即使对于指定其他数据库的模型也是如此。如何告诉Django对另一个数据库运行一个夹具?
My TestCase是定义列表:
class VerifierTestCase(TestCase):
fixtures = ['zipcodes_test.json', 'all_states.json', 'wtf.json']
multi_db = True
答案 0 :(得分:4)
如果指定整个灯具名称,Django中实际上存在一个错误,导致它忽略基于名称的特定于数据库的指针。
所以,如果你做fixtures = ["mydata.default.yaml", "mydata.myotherdatabase.yaml"]
它会将两个灯具加载到默认数据库中。
但是如果你做fixtures = ['mydata']
它会正确加载。对于dbengine特定文件名(例如mydata.default.postgresql.sql
)也是如此。
答案 1 :(得分:1)
灯具按文件名定位到特定数据库。在TestCase实例中也是如此,因为它们只调用loaddata命令。
请参阅https://docs.djangoproject.com/en/dev/ref/django-admin/#database-specific-fixtures