Jmeter之JSON断言

需求

我们发送一个请求,结果返回json数据,我们需要根据json数据中code的值来判断此次请求是否成功。

接口案例:

@PostMapping(value = "/login")
public ResponseMessage<String> login(@RequestBody SeckillUserDTO seckillUserDTO){
    return ResponseMessageBuilder.build(HttpCode.SUCCESS.getCode(), seckillUserService.login(seckillUserDTO.getUserName(), seckillUserDTO.getPassword()));
}

操作步骤

创建线程组

Jmeter之JSON断言_第1张图片

创建http请求

Jmeter之JSON断言_第2张图片

设置请求内容类型content-type

image.png

添加JSON断言

在添加JSON断言之前,先看看这个接口的响应数据格式:
Jmeter之JSON断言_第3张图片
现在,我们要根据响应结果中code的值来判断请求是否成功:
Jmeter之JSON断言_第4张图片

JSON断言成功/失败的情况

  • 响应格式非JSON:失败
  • 找不到code属性:失败
  • 提取到code值,但是没有设置预期值:成功
  • 提取值跟预期值不一致:失败
  • 提取值跟预期值一致:成功
  • 提取值是数组,跌断判断是否与预期值匹配:通过则成功,反之失败。

附:JSONPath语法表

JSONPath语法的一个例子:

{
  "store": {
    "book": [
      {
        "title": "入门到成功",
        "price": 50.00
      },
      {
        "title": "入门到入魂",
        "price": 998.00
      },
    ]
  }
}

如何取第一本书的名称?$.store.book[0].title

XPath JsonPath 说明
/ $ 文档根元素
. @ 当前元素
/ .或[] 匹配下级元素
N/A 匹配上级元素,JsonPath不支持此操作符
// 递归匹配所有子元素
* * 通配符,匹配下级元素
@ N/A 匹配属性,JsonPath不支持此操作符
[] [] 下标运算符,根据索引获取元素,XPath索引从1开始,JsonPath索引从0开始
` ` [,]
N/A [startstep] 数据切片操作,XPath不支持
[] ?() 过滤表达式
N/A () 脚本表达式,使用底层脚本引擎,XPath不支持
() N/A 分组,JsonPath不支持

你可能感兴趣的:(#,Jmeter,jmeter)