2011-04-27 50 views
41

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

+0

我想知道为什么这很重要?它在执行测试时正在测试数据库上运行此迁移。尽管如果你从INSTALLED_APPS中移除'south',你可以阻止运行它的测试。 – 2011-04-27 02:21:32

+1

@Torsten我有一个用例需要这个:我有一个第三方模块,它有一个ForigenKey模型到我的User类。但是,我在'User'中有一个自定义pk字段。因此,当我运行一个测试并且第三方模块的'0001_initial'迁移运行时,它会在测试数据库中创建一个约束,并在'user'表中包含错误的字段名称。这就是为什么当我运行单元测试时需要关闭迁移的原因。 – OrPo 2013-05-27 09:23:31

回答

68

是的,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 
+0

这不会从运行迁移中禁用南,它只会从运行它自己的单元测试向南呈现。查看kiddouck的帖子,了解如何在进行django单元测试时禁用所有南迁。 – 2011-09-20 15:20:52

+0

谢谢@ephesian,它是固定的。 – 2011-09-20 18:09:18

31

即使你选择了很好的答案,我认为你应该考虑改为选项SOUTH_TESTS_MIGRATE。它会阻止在你的测试数据库上运行所有的迁移,而是运行syncdb