来自documentation for to_python
:
作为一般规则,[
to_python
]应优雅地处理以下任何参数:
- 正确类型的实例(例如,我们正在进行的示例中的
Hand
)。- 字符串(例如,来自解串器)。
- 无论数据库返回的是您正在使用的列类型。
我正在查看我的测试覆盖率(使用coverage.py),以及to_python
顶部的代码:
def to_python(self, value):
if isinstance(value, Hand):
return value
# More code for handling strings below (I never get here)
是我调用的to_python
方法的唯一位。我还应该测试什么?我已经测试了从数据库中保存和检索对象,我测试了这样的序列化:
cereal = serializers.serialize('json',
Hand.objects.all())
objects = list(serializers.deserialize("json", cereal))
答案 0 :(得分:0)
我发现to_python
最终会出现一个不是实例的地方的地方 - 在未提供该值的情况下(例如,如果您的字段设置为允许为null)。在这种情况下,因为我严重执行了get_prep_value
,to_python
传递了一个包含None
的字符串。