Files
pydantic/benchmarks/test_cerberus.py
T
Samuel Colvin 677537d1f5 Improve benchmarks (#987)
* add benchmarks for cerberus

* remove toasted-marshmallow, upgrade marshmallow
2019-11-13 15:34:31 +00:00

50 lines
2.1 KiB
Python

from cerberus import Validator, __version__
from dateutil.parser import parse as datetime_parse
class TestCerberus:
package = 'cerberus'
version = str(__version__)
def __init__(self, allow_extra):
schema = {
'id': {'type': 'integer', 'required': True},
'client_name': {'type': 'string', 'maxlength': 255, 'required': True},
'sort_index': {'type': 'float', 'required': True},
'client_phone': {'type': 'string', 'maxlength': 255, 'nullable': True},
'location': {
'type': 'dict',
'schema': {'latitude': {'type': 'float'}, 'longitude': {'type': 'float'}},
'nullable': True,
},
'contractor': {'type': 'integer', 'min': 0, 'nullable': True, 'coerce': int},
'upstream_http_referrer': {'type': 'string', 'maxlength': 1023, 'nullable': True},
'grecaptcha_response': {'type': 'string', 'minlength': 20, 'maxlength': 1000, 'required': True},
'last_updated': {'type': 'datetime', 'nullable': True, 'coerce': datetime_parse},
'skills': {
'type': 'list',
'default': [],
'schema': {
'type': 'dict',
'schema': {
'subject': {'type': 'string', 'required': True},
'subject_id': {'type': 'integer', 'required': True},
'category': {'type': 'string', 'required': True},
'qual_level': {'type': 'string', 'required': True},
'qual_level_id': {'type': 'integer', 'required': True},
'qual_level_ranking': {'type': 'float', 'default': 0, 'required': True},
},
},
},
}
self.v = Validator(schema)
self.v.allow_unknown = allow_extra
def validate(self, data):
validated = self.v.validated(data)
if validated is None:
return False, self.v.errors
else:
return True, validated