【问题标题】:django - specify database for TestCase fixturesdjango - 为 TestCase 夹具指定数据库
【发布时间】:2011-05-04 07:25:30
【问题描述】:

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

我的 TestCase 已定义列表:

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

【问题讨论】:

  • 有人找到答案了吗?无法让固定装置不全部加载到“默认”中
  • 有人找到答案了吗?

标签: django django-testing


【解决方案1】:

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

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

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

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

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

【讨论】:

  • 不幸的是,Django 1.6 并非如此。我在尝试时收到一条错误消息,指出 UserWarning: No fixture named 'migration_test_data' found
  • @CoreDumpError,我也收到了警告,但是,固定装置已正确加载。我认为警告是一种错误。我开了一张票:code.djangoproject.com/ticket/24680#ticket
【解决方案2】:

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2011-03-31
    • 2018-10-15
    • 1970-01-01
    • 1970-01-01
    • 2012-05-20
    相关资源
    最近更新 更多