2010-11-03 43 views
11

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

我的TestCase定义列表:

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

有没有人找到答案呢?无法将灯具加载到'默认' – zenWeasel 2011-07-14 18:56:04

+0

有没有人找到答案? – 2013-10-10 15:35:55

回答

4

实际上有在Django导致如果指定了整个灯具的名称它忽略了基于域名的特定DB-指针的错误。

所以如果你做fixtures = ["mydata.default.yaml", "mydata.myotherdatabase.yaml"]

它都将夹具加载到默认的数据库。

但是,如果你fixtures = ['mydata']

这将正确加载。对于dbengine特定的文件名也是如此(例如mydata.default.postgresql.sql)。

+0

不幸的是,Django 1.6并非如此。当我尝试这样做时,我收到一个错误,指出UserWarning:找不到名为'migration_test_data'的灯具'。 – CoreDumpError 2014-08-13 00:33:13

+0

@CoreDumpError,我也得到了警告,但是,灯具加载正确。我认为警告是一种错误。我发出了一张有关它的票:https://code.djangoproject.com/ticket/24680#ticket – ZZY 2015-04-21 11:23:47