如何在Robot Framework中使用JSON Schema验证企业用户信息JSON响应
解决Robot Framework中JSON响应与JSON Schema的验证问题
我来帮你修正代码里的问题,实现验证Name字段为字符串类型的需求,直接看解决方案:
问题分析
你现有代码的核心问题在于手动构造了错误的待验证实例({"Name":[0,1]}是数组类型,和你要验证的字符串逻辑冲突),同时Schema的加载方式可以更简洁,而且没有用到真实的接口返回数据作为验证对象。
修正后的完整代码
*** Settings *** Library jsonschema Library RequestsLibrary Library json *** Test Cases *** Validate User Details JSON Against Schema # 1. 获取接口返回的JSON响应 ${get_value}= GET On Session xyz /details ${json_response}= Set Variable ${get_value.json()} # 2. 加载本地的JSON Schema文件 ${schema_content}= Get File ./JSONSchema.json ${schema}= Evaluate json.loads('''${schema_content}''') json # 3. 用Schema验证接口返回的JSON数据 Validate instance=${json_response} schema=${schema} # 4. 验证通过后输出提示 Log JSON响应符合Schema规范!所有Name字段均为字符串类型。 INFO
关键修正点说明
- 使用真实响应作为验证对象:去掉手动构造的
${instance},直接用接口返回的${json_response},这才是我们需要验证的真实数据。 - 简化Schema加载:用
Get File直接读取Schema的文本内容,再通过json.loads解析为Python字典,比Get Binary File更适配JSON文本的读取场景。 - 验证逻辑自动生效:
Validate关键字会自动校验整个JSON结构是否匹配Schema定义——包括Name必须为字符串、Id/Name/Status三个字段必填等规则。如果验证失败,测试会直接抛出错误;如果通过,就会执行后续的成功提示日志。
额外优化建议
你的示例Schema里items是包含两个重复对象Schema的数组,这意味着仅能验证固定两个元素的数组。如果接口返回的用户数量不固定,建议把Schema改成以下形式,让所有数组元素都遵循同一验证规则:
{ "$schema": "http://json-schema.org/draft-04/schema#", "type": "array", "items": { "type": "object", "properties": { "Id": { "type": "integer" }, "Name": { "type": "string" }, "Status": { "type": "string" } }, "required": ["Id", "Name", "Status"] } }
内容的提问来源于stack exchange,提问作者Sumit Patra
相关产品推荐
相关产品推荐

