JSON 验证器
JSON 验证器用于验证 JSON 格式响应体中的特定字段值,通过 JSONPath 表达式定位字段。
配置项
yaml
testclass: json # json 验证器,用于验证json内容
field: '$.status' # json path
expected: 200 # 期望值
rule: == # 验证规则
strict: false # 是否严格验证,默认否:忽略大小写验证参数说明
| 参数 | 必填 | 说明 |
|---|---|---|
| testclass | 是 | 验证器类型,固定值为 json |
| field | 是 | JSONPath 表达式,用于定位要验证的字段 |
| expected | 是 | 期望值 |
| rule | 是 | 验证规则,支持多种比较操作 |
| strict | 否 | 是否严格验证,默认为 false(忽略大小写) |
使用示例
验证基本字段
yaml
testclass: http
title: 用户登录
config:
method: POST
protocol: http
host: api.example.com
path: /login
body:
username: testuser
password: testpass
validators:
- testclass: json
field: $.status
expected: 200
rule: '=='
- testclass: json
field: $.data.user.name
expected: testuser
rule: '=='
- testclass: json
field: $.data.token
expected: ''
rule: isNotEmpty验证数组元素
yaml
testclass: http
title: 获取用户列表
config:
method: GET
protocol: http
host: api.example.com
path: /users
validators:
- testclass: json
field: $.data.length()
expected: 10
rule: '>='
- testclass: json
field: $.data[0].id
expected: 0
rule: '>'
- testclass: json
field: $.data[0].name
expected: ''
rule: isNotEmpty复杂验证场景
yaml
testclass: http
title: 创建订单
config:
method: POST
protocol: http
host: api.example.com
url: /orders
body:
product_id: 123
quantity: 2
validators:
- testclass: json
field: $.status
expected: 201
rule: '=='
- testclass: json
field: $.data.order_id
expected: ''
rule: isNotEmpty
- testclass: json
field: $.data.total_amount
expected: 100.0
rule: '>='
- testclass: json
field: $.data.items.length()
expected: 1
rule: '>='支持的验证规则
JSON 验证器支持以下验证规则:
| 规则 | 说明 | 示例 |
|---|---|---|
== | 相等 | field: $.status, expected: 200, rule: "==" |
eq_any | 任意一个相等 | field: $.status, expected: [200, 300], rule: "eq_any" |
!= | 不相等 | field: $.status, expected: 404, rule: "!=" |
> | 大于 | field: $.status, expected: 0, rule: ">" |
< | 小于 | field: $.status, expected: 10000, rule: "<" |
>= | 大于等于 | field: $.status, expected: 0, rule: ">=" |
<= | 小于等于 | field: $.status, expected: 100, rule: "<=" |
contains | 包含 | field: $.data, expected: "success", rule: "contains" |
any_contains | 包含任意一个 | field: $.data, expected: [success, false], rule: "any_contains" |
not_contains | 不包含 | field: $.data, expected: "error", rule: "not_contains" |
regex | 正则匹配 | field: $.data, expected: "^\\d{4}-\\d{2}-\\d{2}$", rule: "regex" |
is_not_empty | 非空 | field: header.Content-Type, rule: "is_not_empty" |
is_empty | 为空 | field: header.Content-Type, rule: "is_empty" |
same_object | 对象匹配 | field: $.data, expected: {}, rule: "same_object" |
JSONPath 语法说明
常用 JSONPath 表达式:
| 表达式 | 说明 | 示例 |
|---|---|---|
$ | 根节点 | $.status |
. | 子节点 | $.data.user |
.. | 递归下降 | $..name |
* | 通配符 | $.data.* |
[] | 数组索引 | $.data[0] |
[start:end] | 数组切片 | $.data[1:3] |
[?(expression)] | 过滤表达式 | $.data[?(@.price > 100)] |
() | 脚本表达式 | $.data[(@.length-1)] |
@ | 当前节点 | $.data[?(@.name == 'test')] |