gpt4 book ai didi

django - 在 Django 中测试向南迁移

转载 作者:行者123 更新时间:2023-12-02 10:22:26 26 4
gpt4 key购买 nike

有谁知道在编写迁移后测试迁移本身的方法吗?在我的 DataMigrations 中,我多次发现了愚蠢的微妙错误,例如默认值的 True 而不是 False、错误的非规范化等。

默认的 South 约定是从数字开始迁移,因此如果不使用 __import__,您甚至无法导入它们。有人遇到过类似的问题吗?人们如何解决这些问题?

最明显的方法是将迁移逻辑保存在单独的导入模块中并对其进行测试,但这有点笨拙。

最佳答案

我也遇到了同样的问题。由于我没有找到对数据迁移进行测试的方法,因此我使用断言来检测损坏的数据:

from django.conf import settings

class MyModel(models.Model):
stupid_error = models.BooleanField(default=False)

def __init__(self, *args, **kwargs):
super(MyModel, self).__init__(*args, **kwargs)
if settings.DEBUG:
assert not self.stupid_error

好吧,就是有点笨拙。但它似乎有效。

[编辑]再想一想,我找到了一个更好的解决方案:将测试放入 DataMigration 本身。由于迁移是一次性代码,因此不必一遍又一遍地进行测试。

class Migration(DataMigration):
def forwards(self, orm):
# lots of awesome migration code here
# ...
for m in orm.MyModel.objects.all():
assert not m.stupid_error

关于django - 在 Django 中测试向南迁移,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8798868/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com