相关疑难解决方法(0)

在Django 1.7中运行单元测试时禁用迁移

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选项可用于在测试运行之间保留测试数据库.这样做的优点是可以跳过create和destroy操作,这大大减少了运行测试的时间,特别是在大型测试套件中.如果测试数据库不存在,它将在第一次运行时创建,然后为每次后续运行保留.在运行测试套件之前,任何未应用的迁移也将应用于测试数据库.

所以这个问题仅限于Django 1.7.

django unit-testing django-migrations

106
推荐指数
4
解决办法
2万
查看次数

标签 统计

django ×1

django-migrations ×1

unit-testing ×1