0

我得到以下代码的意外行为:

import cerberus
v = cerberus.Validator()
schema = {'list_of_values': {'type': 'list',
                             'schema': {'items': [{'type': 'string', 'coerce': str},
                                                  {'type': 'integer', 'coerce': int}]}}
                             }
document = {'list_of_values': [['hello', 100], [123, "122"]]}
v.validate(document, schema)
v.errors

我希望没有错误,因为强制应该处理类型。但我越来越

{'list_of_values': [{1: [{0: ['must be of string type'],
     1: ['must be of integer type']}]}]}

这是一个错误吗?我是否误解了强制的工作原理?

4

1 回答 1

1

@funky-未来

您的问题不对,我确实可以通过将示例复制粘贴到提示中来重现该问题:

>>> import cerberus
>>> v = cerberus.Validator()
>>> schema = {'list_of_values': {'type': 'list',
...                              'schema': {'items': [{'type': 'string', 'coerce': str},
...                                                   {'type': 'integer', 'coerce': int}]}}
...                              }
>>> document = {'list_of_values': [['hello', 100], [123, "122"]]}
>>> v.validate(document, schema)
False
>>> v.errors
{'list_of_values': [{1: [{0: ['must be of string type'], 1: ['must be of integer type']}]}]}

Python3.5.2、cerberus1.2

于 2019-03-15T12:47:43.430 回答