django - 为TestCase灯具指定数据库

mat*_*der 13 django django-testing

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

我的TestCase是定义列表:

class VerifierTestCase(TestCase):
    fixtures = ['zipcodes_test.json', 'all_states.json', 'wtf.json']
    multi_db = True
Run Code Online (Sandbox Code Playgroud)

zen*_*sel 5

实际上,Django 中有一个错误,如果您指定整个设备名称,它会导致它忽略基于名称的数据库特定指针。

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

它将把两个灯具加载到默认数据库中。

但如果你这样做fixtures = ['mydata']

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


GDo*_*orn 2

夹具通过文件名针对特定数据库。在 TestCase 实例中也是如此,因为它们只是调用 loaddata 命令。

请参阅https://docs.djangoproject.com/en/dev/ref/django-admin/#database-specific-fixtures