JSON 断言是 JMeter 中用于验证 JSON 格式响应的一种断言方式。该断言允许用户指定 JSON 路径表达式并验证 JSON 响应是否符合该表达式。我们下面用一个 Demo 来介绍 JSON 断言的使用。想要学习更多关于 JMeter 的知识,可访问 Jmeter 中文文档。
添加 HTTP 接口
我们有如下的 HTTP 接口。

JSON 路径表达式介绍
JMeter 将会对响应进行 JSON 解析,并使用用户输入的 JSON 路径表达式进行验证。表达式由一系列的属性名和数组索引组成:以 “$.” 开头,用“.”和“[]”分隔。例如,以下 JSON 响应:
{
"name": "John",
"age": 30,
"cars": [
{
"name": "Ford",
"models": [
"Fiesta",
"Focus",
"Mustang"
]
},
{
"name": "BMW",
"models": [
"320",
"X3",
"X5"
]
}
]
}
可以使用以下表达式获取相应的值:
- $.name:获取 "John"。
- $.cars[0].name:获取 "Ford"。
- $.cars[1].models[2]:获取 "X5"。
添加 JSON 断言
添加 JSON 断言: 右击接口 > 添加 > 断言 > JSON断言。

之前的接口返回的数据结果如下:
{
"total": 3,
"data": [
{
"id": 1,
"name": "Apple",
"price": 100
},
{
"id": 2,
"name": "Orange",
"price": 200
},
{
"id": 3,
"name": "Banana",
"price": 300
}
]
}
我们对 total 做断言:

我们对 data 的第 1 项 name 做断言:

断言结果
运行用例。如果 JSON 响应符合断言,则什么都不会发生。否则,在结果树中会看到报错信息。将 data 的第 1 项 name 的断言值改成 Apple3
,运行,就会看到如下的报错:

总结
通过使用 JSON 断言,用户可以轻松地验证 JSON 格式响应是否符合预期。然而,在配置 JSON 断言时需要特别注意 JSON 路径表达式的编写,确保表达式正确,否则将会导致断言失败。
试试比 JMeter 更好用的 API 工具:Apifox
在 Apifox 使用断言也很容易。上面的例子,对应在 Apifox 中的实现,我们只需要在「后置操作」中选择新增断言即可。

Apifox 还支持从返回响应直接提取断言,一键设置,无需手写 JSONPath 表达式。

Apifox 支持的断言判断条件更丰富:

断言结果出错时,报错信息直接展示在响应内容旁边,方便对照内容找出问题。

JMeter 可以用来做性能测试,但在日常工作中,我们还有更多的内容要做: API 设计,API 调试,API Mock 等。我们可能会使用多个工具,但在多个工具之间频繁切换(API 设计工具 Swagger、API 测试工具 JMeter)经常会导致数据不一致和团队协作低效率。
Apifox 是一款更加智能化的 API 设计/开发/测试工具,相较于 JMeter 软件,Apifox 有以下优势:

自动化测试
Apifox 提供了自动化测试的功能,用户可以通过自动化测试来减少测试时间和人力成本。用户只需要设置测试计划,Apifox 就可以自动运行测试,并生成测试结果和报告。此外,Apifox 还支持测试套件,可以一次性运行多个测试用例,提高测试效率。

多环境支持
Apifox 支持多个测试环境,用户可以通过切换环境来测试不同的 API。用户只需要设置环境变量,Apifox 就可以自动切换 API 请求的 URL 和参数。此外,Apifox 还支持环境导入和导出,方便用户在不同的设备或团队之间共享测试环境。

协作和分享
Apifox 提供了协作和分享的功能,用户可以与团队成员或其他人分享测试结果和测试数据。用户还可以将测试结果和报告导出为 HTML 格式。此外,Apifox 还支持团队协作和权限管理,可以让团队成员共享 API 设计和测试资源。

总之,相较于 JMeter,Apifox 更加易于使用和智能化,可以帮助用户更高效地进行 API 测试和管理。无论是个人开发者还是企业团队,都可以通过 Apifox 提高 API 测试的效率和质量。因此,越来越多人开始选择使用 Apifox 替代 JMeter。
知识扩展: