运行单元测试时禁用 Django South?
Posted
技术标签:
【中文标题】运行单元测试时禁用 Django South?【英文标题】:Disable Django South when running unit tests? 【发布时间】:2011-08-13 11:54:42 【问题描述】:在在进行 django 单元测试时如何避免运行所有的南迁移?
【问题讨论】:
我想知道为什么这很重要?执行测试时,它正在测试数据库上运行此迁移。虽然如果你从 INSTALLED_APPS 中删除south
,你可以阻止运行它的测试。
@Torsten 我有一个需要这样做的用例:我有一个第 3 方模块,它的模型带有 ForigenKey 到我的 User
类。但是,我的User
中有一个自定义 pk 字段。因此,当我运行测试并运行此第 3 方模块的 0001_initial
迁移时,它会在测试数据库中创建一个约束,并在 user
表中使用错误的字段名称。这就是为什么我需要在运行单元测试时关闭迁移。
【参考方案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
。
【讨论】:
以上是关于运行单元测试时禁用 Django South?的主要内容,如果未能解决你的问题,请参考以下文章