首页 前端知识 Jmeter-json断言

Jmeter-json断言

2024-06-18 23:06:21 前端知识 前端哥 888 120 我要收藏

目录

一、JSON断言说明

1、作用

2、使用场景

3、使用频率

4、使用步骤

二、准备工作

1、请求

2、测试步骤

三、测试计划用例

1、Assert JSON Path exists

(1)添加用户定义变量

(2)添加测试片段

(3)复制参数值

(4)添加HTTP请求

(5)添加JSON提取器

(6)添加调试后置处理程序

(7)添加HTTP请求默认值

(8)复制所有请求标头

(9)添加HTTP信息头管理器

2、Additionally assert value

3、Expect null

4、Invert assertion (will fail if above conditions met)


一、JSON断言说明


1、作用

可以对 Jmeter 取样器的响应消息以 JSON 方式进行检查

2、使用场景

当返回为 JSON 时,利用 JSON 断言,我们可以快速检测响应报文返回的特征值,进而判断取样器在业务上是否正确

3、使用频率

比较高,尤其是返回为 JSON 时,为最优先的断言器

4、使用步骤

测试计划右键 -> 添加 -> 断言 -> JSON断言(JSON Assertion),如图所示:

(1)Assert JSON Path exists:用于断言的JSON元素的路径(JSONPath);检测JSONPath是否存在;使用XPATH语法书写

(2)Additionally assert value:是否额外验证根据JSONPath提取的值

  • 不勾选,验证JSONPath能否在JSON文档中找到路径
  • 勾选,验证根据JSONPath提取值是否符合预期

(3)Match as regular expression:预期值是否可以使用正则表达式

  • 不勾选,预期值不能使用正则表达式表示
  • 勾选,预期值可以使用正则表达式表示

(4)Expected Value:预期值;支持脚本语言写法

(5)Expect null:若验证提取的值为null,则勾选此项;验证null值,还是需要勾选“Additionally assert value”,否则验证的是JSONPath能否找到路径;预期值不填表示空字符,与null不等价

(6)Invert assertion (will fail if above conditions met):若勾选,表示对断言结果取反

注意:除了 null 外,还有一种特殊的值,就是空数组,预期值不能不填,需要设置为:[] ,其中 [] 表示空数组

二、准备工作

1、请求

慕慕生鲜: http://111.231.103.117/#/login

2、测试步骤

  • 进入网页后,登录,页面提供了账户和密码

  • 搜索框输入“虾”

  • 右键检查或按F12,打开调试工具,点击搜索

三、测试计划用例

1、Assert JSON Path exists


(1)添加用户定义变量

测试计划右键 -> 添加 -> 配置元件 -> 用户定义的变量,添加一个变量:IP,值为 111.231.103.117

(2)添加测试片段

测试计划右键 -> 添加 -> 测试片段 -> 测试片段,命名为:HTTP 采样请求

(3)复制参数值

进入登陆界面后,在首页右键检查打开开发者工具,调试中点击网络,找到请求,点击负载,复制参数值

(4)添加HTTP请求

测试片段右键 -> 添加 -> 取样器 ->HTTP请求

协议:GET

路径:/product/list

参数:从浏览器中复制过来

(5)添加JSON提取器

HTTP请求右键 -> 添加 -> 后置处理器 -> JSON提取器

  • 勾选 Main sample only--------------只对主取样器进行提取
  • Name of created variable:var1--------------参数名为:var1
  • JSON Path expressions:$..list[*].name--------------【$:开始符固定的; ..:0到多个级别,单个为根级别; list:返回的响应数据结构,相当于字典,key为list的值; name:list值中名为name键的值】
  • Match No. (0 for Random):-1-------------------匹配所有符合正则表达式的值

(6)添加调试后置处理程序

HTTP请求右键 -> 添加 -> 后置处理器 -> 调试后置处理程序,参数默认即可

(7)添加HTTP请求默认值

HTTP请求右键 -> 添加 -> 配置元件 -> HTTP请求默认值

协议:http

服务器名称或IP:${IP}

使用变量获取ip

端口:8083

内容编码:utf-8

(8)复制所有请求标头

在网页中,调试中点击网络,找到请求,点击标头找到请求标头,复制所有请求标头

(9)添加HTTP信息头管理器

HTTP请求右键 -> 添加 -> 配置元件 -> HTTP信息头管理器

(10)添加线程组

测试计划右键 -> 添加 -> 线程(用户)-> 线程组,参数默认即可

(11)添加模块控制器

线程组右键 -> 添加 -> 逻辑控制器 -> 模块控制器,选择 HTTP 采样请求

(12)添加JSON断言

线程组右键 -> 添加 -> 断言 -> JSON断言

Assert JSON Path exists:$.data.total
用来判断响应数据——Response Body 中是否存在此路径

(13)添加查看结果树

线程组右键 -> 添加 -> 监听器 -> 查看结果树

(14)启动

点击启动,点击查看结果树,查看请求及取样器信息

如图,HTTP请求成功,HTTP请求的响应数据下的Response Body中存在 $.data.total 此路径,所以断言成功,请求也是成功的

Assert JSON Path exists:响应数据——Response Body 中是否存在此路径;使用XPATH语法书写

2、Additionally assert value


测试计划设计在 3.1 基础上进行修改验证

(1)修改 JSON断言,勾选 Additionally assert value,Expected Value 输入 2

  • Assert JSON Path exists:$.data.total
  • 勾选 Additionally assert value(验证根据JSONPath提取的值,与 Expected Value 输入框配合使用)
  • Expected Value:2

验证JSONPath提取的值是否与书写的值一致,与 Additionally assert value 配合使用;与 响应数据——Response Body 中的 total 值比较

(2)重新启动

如图,HTTP请求成功,HTTP请求的响应数据下的Response Body中存在 $.data.total 此路径,且路径中 total 的值为2 ,所以断言成功,请求也是成功的

(3)修改 JSON断言,勾选 Additionally assert value,Expected Value 为空

  • Assert JSON Path exists:$.data.total
  • 勾选 Additionally assert value

勾选 Additionally assert value,但未写 Expected Value 时,验证JSONPath路径提取的值是否为 ' ',即空的

(4)重新启动,点击查看结果树

如图,HTTP请求失败,HTTP请求的响应数据下的Response Body中存在 $.data.total 此路径,且路径中 total 的值为2 ,而JSON断言中,Expected Value 为空,断言 total 值是否为空

Additionally assert value:勾选后,验证根据JSONPath提取的值,是否与 Expected Value 中书写的值一致

3、Expect null


测试计划设计在 3.2 基础上进行修改验证

(1)修改 JSON断言,勾选 Expect null

  • Assert JSON Path exists:$.data.total
  • 勾选 Additionally assert value
  • 勾选 Expect null

验证JSONPath提取的值是否是 null,与 Additionally assert value 配合使用;与 响应数据——Response Body 中的 total 值比较

(2)重新启动,点击查看结果树

如图,HTTP请求失败,HTTP请求的响应数据下的Response Body中存在 $.data.total 此路径,且路径中 total 的值为2 ,而JSON断言中,勾选了 Expect null,断言 total 值是否为 null

4、Invert assertion (will fail if above conditions met)


测试计划设计在 3.3 基础上进行修改验证

(1)修改 JSON断言,勾选 Invert assertion (will fail if above conditions met)

  • Assert JSON Path exists:$.data.total

  • 勾选 Additionally assert value

  • 勾选 Expect null

  • 勾选 Invert assertion (will fail if above conditions met)

(2)重新启动,点击查看结果树

如图,HTTP请求成功,3.3 中的测试计划是断言失败的,勾选 Invert assertion (will fail if above conditions met) 取反,所以断言成功

Invert assertion (will fail if above conditions met):对断言结果取反
 

转载请注明出处或者链接地址:https://www.qianduange.cn//article/12715.html
标签
jmeter
评论
发布的文章
大家推荐的文章
会员中心 联系我 留言建议 回顶部
复制成功!