【问题标题】:Disable Django South when running unit tests?运行单元测试时禁用 Django South?
【发布时间】:2011-08-13 11:54:42
【问题描述】:

在运行单元测试时禁用 Django South?在进行 django 单元测试时如何避免运行所有的南迁移?

【问题讨论】:

  • 我想知道为什么这很重要?执行测试时,它正在测试数据库上运行此迁移。虽然如果你从 INSTALLED_APPS 中删除 south,你可以阻止运行它的测试。
  • @Torsten 我有一个需要这样做的用例:我有一个第 3 方模块,它的模型带有 ForigenKey 到我的 User 类。但是,我的User 中有一个自定义 pk 字段。因此,当我运行测试并运行此第 3 方模块的 0001_initial 迁移时,它会在测试数据库中创建一个约束,并在 user 表中使用错误的字段名称。这就是为什么我需要在运行单元测试时关闭迁移。

标签: django unit-testing django-south


【解决方案1】:

是的,South documentation 描述了如何做到这一点,但基本上只需将其添加到您的 settings.py 文件中:

SOUTH_TESTS_MIGRATE = False # To disable migrations and use syncdb instead
SKIP_SOUTH_TESTS = True # To disable South's own unit tests

【讨论】:

  • 这不会禁止 south 运行迁移,它只会显示 south 运行自己的单元测试。请参阅 Kiddouck 的帖子,了解如何在进行 django 单元测试时禁用所有南迁移。
  • 感谢@ephesian,已修复。
【解决方案2】:

尽管您选择了好的答案,但我认为您应该考虑使用 SOUTH_TESTS_MIGRATE 选项。它将阻止在您的测试数据库上运行所有迁移,而是运行syncdb

【讨论】:

    猜你喜欢
    • 2014-09-29
    • 1970-01-01
    • 1970-01-01
    • 2011-06-15
    • 2011-07-12
    • 2016-11-16
    • 2021-10-11
    • 2012-11-28
    • 1970-01-01
    相关资源
    最近更新 更多