【发布时间】:2015-01-19 13:26:47
【问题描述】:
我试图在我的一个测试中断言模型中的字段没有改变。我知道在哲学上这是不正确的,但由于我控制了我需要知道的所有变量,我只想检查我的数据库条目没有改变。
我愿意接受一种解决方案,该解决方案可以将其转换为未调用某些 API 的断言,这应该更新模型,但我知道 API 可能没有完整记录,所以我更喜欢有一种方法可以检查所有字段值是否相等。
无论如何,我知道该怎么做,但我使用的是 django 1.6 并且 Model._meta API 尚未公开:
def assertFieldsEqual(self, instance1, instance2)
for field_name in MyModel._meta.get_all_field_names():
val1 = getattr(instance1, field_name)
if not isinstance(val1, django.db.models.Field):
continue # this excludes managers
if val1 != getattr(instance2, field_name):
return False # or raise assertion error, or whatever
return True # or don't do nothing, or whatever
那么有没有更好的办法呢?
[编辑] 蟒蛇2.7
【问题讨论】:
-
您使用的是哪个 python 版本? (2.x 或 3.x)
-
已更新。我正在使用 djpython 2.7
标签: python django testing assert