Django有一个
--check
参数,让您检查是否需要为项目创建迁移。这相对容易添加到CI中,但不会在开发人员计算机上执行检查。
我想在我的Django项目中添加这个检查作为单元测试,以便在开发人员运行我们的测试套件时覆盖它。
实现这一点的好方法是什么?
您可以添加以下单元测试:
from io import StringIO
def test_for_missing_migrations():
output = StringIO()
call_command("makemigrations", no_input=True, dry_run=True, stdout=output)
assert output.getvalue().strip() == "No changes detected", (
"There are missing migrations:n %s" % output.getvalue()
)
它检查python manage.py makemigrations的结果是否返回一个";没有检测到变化";,这意味着不需要创建迁移。