作者热门文章
- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
有谁知道在编写迁移后测试迁移本身的方法吗?在我的 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/
我是一名优秀的程序员,十分优秀!