JMeter JSON 断言用于验证 JSON 响应。它通过 JSONPath 提取内容,并检查路径是否存在、值是否符合预期,非常适合测试 RESTful API。
如何添加
在需要检查的 HTTP 请求上右键:
添加 → 断言 → JSON 断言
JMeter 3.0 起内置该断言,无需安装插件。JMeter 5.2 以上还有一个 JSON JMESPath Assertion(基于 JMESPath 语法),用法类似。
配置字段说明(无表格,逐条说明)
JSON Path:填写 JSONPath 表达式,定位你要检查的字段,-例-如 $.data.id
Additionally assert value:勾选后,不仅要求路径存在,还要校验它的具体值
Match as regular expression:当勾选了值校验,可将期望值当作正则表达式来匹配
Expected Value:期望的值(仅在勾选“Additionally assert value”时生效)
Expect null:勾选后,期望 JSONPath 取到的值为 null,此时“Expected Value”会被忽略
Invert assertion:-反-转结果,即如果路径匹配成功,断言反而失败
JSONPath 常用写法(不用表格,纯列表)
$ – 根对象
$.name 或 $['name'] – 取根对象的 name 字段值
$.store.book[0].title – 取第一本书的标题
$.store.book[*].title – 取所有书的标题(返回数组)
$.store.book[?(@.price < 10)] – 过滤出价格小于 10 的书(返回对象数组)
$.store.book.length() – 获取 book 数组的长度(数值)
常见用例举例
1. 仅检查路径存在(不关心值)
JSON Path:$.data.user.id
不勾选 “Additionally assert value”
只要路径存在且值不为 null 即通过
2. 断言值等于特定内容
JSON Path:$.code
勾选 “Additionally assert value”
Expected Value:200
注意:如果响应是 "code": "200"(字符串),期望值要写 "200"
3. 正则匹配
JSON Path:$.message
勾选 “Additionally assert value” 和 “Match as regular expression”
Expected Value:成功|ok (匹配包含“成功”或“ok”)
4. 检查数组长度
JSON Path:$.data.items.length()
勾选 “Additionally assert value”
Expected Value:3 (期望 items 数组长度为 3)
5. 断言值为 null
JSON Path:$.error
勾选 “Expect null”
当 error 字段为 null 或路径不存在时通过
6. 反-向断言(确保某字段不出现)
JSON Path:$.errors
勾选 “Invert assertion”
如果 errors 路径存在且不为 null,则断言失败
调试提示
在察看结果树中,左下角切换到 “JSON Path Tester” 可以实时测试你的 JSONPath 表达式。若需要验证多个字段,直接添加多个 JSON 断言即可,全部通过才算成功。