def test_required_keyword():
schema = {
'type': 'object',
'definitions': {
'positiveInteger': {'type': 'integer', 'minimum': 0},
'twoNumbers': {'properties': {'num1': {'type': 'number'},
'num2': {'type': 'number'}}}
},
'properties': {
'string1': {'type': 'string'},
'string2': {'type': 'string'},
'integer1': {'type': 'integer'},
'integer2': {'type': 'integer'},
'number1': {'type': 'number'},
'number2': {'type': 'number'},
'bool1': {'type': 'boolean'},
'bool2': {'type': 'boolean'},
'null1': {'type': 'null'},
'null2': {'type': 'null'},
'enum1': {'enum': [1, 2, 3]},
'enum2': {'enum': [1, 2, 3]},
'array1': {'type': 'array', 'items': {'type': 'integer'}},
'array2': {'type': 'array', 'items': {'type': 'integer'}},
'traitref1': {'$ref': '#/definitions/positiveInteger'},
'traitref2': {'$ref': '#/definitions/positiveInteger'},
'objref1': {'$ref': '#/definitions/twoNumbers'},
'objref2': {'$ref': '#/definitions/twoNumbers'},
'typelist1': {'type': ['string', 'integer']},
'typelist2': {'type': ['string', 'integer']},
},
'required': ['string1', 'integer1', 'number1',
'bool1', 'null1', 'enum1', 'array1',
'traitref1', 'objref1', 'typelist1']
}
js = JSONSchema(schema).traitlets
js.load_module('_schema', reload_module=True)
from _schema import Root
assert Root()._required_traits == js.required
r = Root()
with pytest.raises(T.TraitError) as err:
r.to_dict()
assert err.match("Required trait '[a-z]+1' is undefined")
评论列表
文章目录