You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.30 16:18:15