Django 1.7引入了数据库迁移。
在Django 1.7中运行单元测试时,它会强制进行迁移,这需要很长时间。因此,我想跳过django迁移,并以最终状态创建数据库。
我知道忽略迁移可能是一个坏习惯,因为该部分代码将不会进行测试。事实并非如此:我正在CI测试服务器(jenkins)中运行完整迁移。我只想在速度很重要的本地测试中跳过迁移。
一些背景:
直到Django 1.6为止,在使用South时,我使用SOUTH_TESTS_MIGRATE设置:
默认情况下,South的syncdb命令如果以非交互模式运行(包括运行测试的时间),也会应用迁移-它将在每次运行测试时运行每次迁移。
如果您希望测试运行程序使用syncdb而不是进行迁移(例如,如果迁移时间太长而无法应用),则只需在settings.py中设置SOUTH_TESTS_MIGRATE = False。
但是,syncdb不再存在,现在可以进行迁移。
从Django 1.8开始,我将使用--keepdb参数:
--keepdb选项可用于在两次测试运行之间保留测试数据库。这具有跳过创建和销毁操作的优势,这大大减少了运行测试的时间,尤其是大型测试套件中的测试。如果测试数据库不存在,它将在第一次运行时创建,然后为以后的每次运行保留。在运行测试套件之前,所有未应用的迁移也将应用于测试数据库。
因此,此问题仅限于Django 1.7。
django-test-without-migrations
软件包对我来说真的很方便,您可能想将接受的答案更改为stackoverflow.com/a/28993456/200224