django - 为TestCase灯具指定数据库

时间:2010-11-03 04:24:23

标签: django django-testing

我有两个我的网站使用的数据库,我有一个使用它们的应用程序。我需要编写一个TestCase来为两个数据库加载fixture。我使用的是数据库路由器,它在生产中运行良好,但在测试框架中,Django坚持对所有灯具使用“默认”数据库,即使对于指定其他数据库的模型也是如此。如何告诉Django对另一个数据库运行一个夹具?

My TestCase是定义列表:

class VerifierTestCase(TestCase):
    fixtures = ['zipcodes_test.json', 'all_states.json', 'wtf.json']
    multi_db = True

2 个答案:

答案 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