您好, 欢迎来到 !    登录 | 注册 | | 设为首页 | 收藏本站

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

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

看一下由Bernie Sumption发布到Django开发人员邮件列表的解决方法

如果尚未运行makemigrations,则“ migrate”命令会将应用程序视为未迁移,并直接从模型中创建表,就像syncdb在1.6中所做的那样。我为单元测试定义了一个新的设置模块,名为“ settings_test.py”,该模块从主设置模块导入*并添加以下行:

MIGRATION_MODULES = {“ myapp”:“ myapp.migrations_not_used_in_tests”}

然后我运行如下测试:

DJANGO_SETTINGS_MODULE =“ myapp.settings_test” python manage.py测试

傻瓜会迁移到认为该应用程序未迁移的状态,因此每次创建测试数据库时,它都会反映出models.py的当前结构。

在Django 1.9中,这种情况有所改善,你可以将值设置为None

MIGRATION_MODULES = {“ myapp”:无}

这是我的设置文件的结尾:

class DisableMigrations(object):

    def __contains__(self, item):
        return True

    def __getitem__(self, item):
        return None


TESTS_IN_PROGRESS = False
if 'test' in sys.argv[1:] or 'jenkins' in sys.argv[1:]:
    logging.disable(logging.CRITICAL)
    PASSWORD_HASHERS = (
        'django.contrib.auth.hashers.MD5PasswordHasher',
    )
    DEBUG = False
    TEMPLATE_DEBUG = False
    TESTS_IN_PROGRESS = True
    MIGRATION_MODULES = DisableMigrations()
Go 2022/1/1 18:17:48 有466人围观

撰写回答


你尚未登录,登录后可以

和开发者交流问题的细节

关注并接收问题和回答的更新提醒

参与内容的编辑和改进,让解决方法与时俱进

请先登录

推荐问题


联系我
置顶