You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Django或pytest实现未运行makemigrations时测试直接失败

实现未生成迁移文件时测试直接失败的两种方案

方案1:直接使用Django自带检查命令

Django原生支持makemigrations --check参数,该参数会检测当前模型的变更是否已经生成对应的迁移文件,如果存在未同步的变更就会返回非0的退出码,直接中断流程。
你可以把这个命令加到测试执行的前置步骤中,不管是本地测试启动脚本还是CI流水线的测试环节,都先执行:
python manage.py makemigrations --check
只要有未生成的迁移文件,这条命令就会直接报错退出,不会走到后续测试执行步骤。

方案2:pytest集成自动检查

如果你使用pytest-django,可以直接在项目的conftest.py文件中添加一个自动运行的fixture,在测试会话启动前就执行迁移检查:

import pytest
from django.core.management import call_command

@pytest.fixture(scope="session", autouse=True)
def check_pending_migrations():
    try:
        call_command("makemigrations", check=True)
    except SystemExit as e:
        pytest.exit("检测到未生成的模型迁移文件,请先执行makemigrations后再运行测试", returncode=e.code)

添加完成后每次启动pytest都会自动完成迁移检查,只要存在未生成的迁移就会直接终止测试,输出明确的报错信息。

补充说明:如果希望保留本地开发时的灵活性,可以添加环境变量判断逻辑,比如只在CI环境运行测试时开启该检查,本地调试时默认关闭,避免频繁调整模型时反复生成临时迁移文件的麻烦。

内容的提问来源于stack exchange,提问作者Will Gordon

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 04:15:04