即使验证失败,Marshmallow 序列化错误也是空的
Marshmallow serialization errors are empty even when validation fails
我正在将 marshmallow 添加到我的 Python 网络服务,主要是为了我可以使用模式生成 OpenAPI 文档,但我也想要错误检查我的 API 响应序列化。我已经阅读了相关文档,但我不明白为什么在序列化不完整的对象时看不到错误。
例如,具有以下架构:
class UserResponse(Schema):
user = fields.Integer(required=True)
email = fields.Email(required=True)
name = fields.String(required=True)
role = fields.String(required=True)
class Meta:
strict = True
schema = UserResponse()
验证按预期工作:
>>> schema.validate({'user': 1})
ValidationError: {'email': ['Missing data for required field.'], 'role': ['Missing data for required field.'], 'name': ['Missing data for required field.']}
但是序列化returns一个空的错误列表:
>>> schema.dump({'user':1})
MarshalResult(data={'user': 1}, errors={})
这是它应该如何工作的吗?如果序列化对象缺少必填字段,我希望返回错误。
根据设计,在 marshmallow 中,验证仅在反序列化时执行。
我正在将 marshmallow 添加到我的 Python 网络服务,主要是为了我可以使用模式生成 OpenAPI 文档,但我也想要错误检查我的 API 响应序列化。我已经阅读了相关文档,但我不明白为什么在序列化不完整的对象时看不到错误。
例如,具有以下架构:
class UserResponse(Schema):
user = fields.Integer(required=True)
email = fields.Email(required=True)
name = fields.String(required=True)
role = fields.String(required=True)
class Meta:
strict = True
schema = UserResponse()
验证按预期工作:
>>> schema.validate({'user': 1})
ValidationError: {'email': ['Missing data for required field.'], 'role': ['Missing data for required field.'], 'name': ['Missing data for required field.']}
但是序列化returns一个空的错误列表:
>>> schema.dump({'user':1})
MarshalResult(data={'user': 1}, errors={})
这是它应该如何工作的吗?如果序列化对象缺少必填字段,我希望返回错误。
根据设计,在 marshmallow 中,验证仅在反序列化时执行。