14

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

我的 TestCase 定义列表:

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

2 回答 2

4

如果您指定整个夹具名称,Django 中实际上存在一个错误,它会导致它忽略基于名称的 db-specific 指针。

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

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

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

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

于 2011-11-30T19:33:52.343 回答
1

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

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

于 2011-07-21T20:09:11.547 回答