【P47】JMeter JSON断言(JSON Assertion)

news/2024/10/17 6:33:35/

文章目录

    • 一、JSON断言(JSON Assertion)参数说明
    • 二、准备工作
    • 三、测试计划设计
      • 3.1、Assert JSON Path exists
      • 3.2、Additionally assert value
      • 3.3、Expect null
      • 3.4、Invert assertion (will fail if above conditions met)


一、JSON断言(JSON Assertion)参数说明

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

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

使用频率:比较高,尤其是返回为 JSON 时,为首先断言器

右键 >>> 添加 >>> 断言 >>> JSON断言(JSON Assertion)

在这里插入图片描述

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

  • Additionally assert value:是否额外验证根据JSONPath提取的值。不勾选,验证JSONPath能否在JSON文档中找到路径;勾选,验证根据JSONPath提取值是否预期

  • Match as regular expression:预期值是否可以使用正则表达式。不勾选,预期值不能使用正则表达式表示;勾选,预期值可以使用正则表达式表示

  • Expected Value:预期值;支持脚本语言写法

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

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

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

二、准备工作

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

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

  • 搜索框输入“虾”

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

在这里插入图片描述

三、测试计划设计

3.1、Assert JSON Path exists

(1)、测试计划右键 <<< 添加 <<< 配置原件 <<< 用户定义的变量

在这里插入图片描述

  • 添加一个变量:IP,值为 111.231.103.117

(2)、测试计划右键 <<< 添加 <<< 测试片段 <<< 测试片段

在这里插入图片描述

  • 名称:HTTP 采样请求

(3)、在网页中,调试中点击网络,找到请求,点击负载,复制参数值

在这里插入图片描述

(4)、HTTP 采样请求右键 <<< 添加 <<< 取样器 <<< HTTP请求

在这里插入图片描述

  • 协议:GET

  • 路径:/product/list

  • 点击从剪切板添加,会自动添加;也可手动添加

(5)、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

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

使用变量获取ip

  • 端口:8083

  • 内容编码:utf-8

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

在这里插入图片描述

(9)、HTTP请求右键 <<< 添加 <<< 配置元件 <<< HTTP信息头管理器

在这里插入图片描述

  • 点击从剪切板添加,会将复制的值自动添加进去

如图,可以将信息头中的 ip 使用变量 ${IP} 代替

(10)、测试计划右键 <<< 添加 <<< 线程(用户)<<< 线程组

在这里插入图片描述

  • 参数默认即可

(11)、线程组右键 <<< 添加 <<< 逻辑控制器 <<< 模块控制器

在这里插入图片描述

  • 选择 HTTP 采样请求

(12)、线程组右键 <<< 添加 <<< 断言 <<< JSON断言

在这里插入图片描述

在这里插入图片描述

  • Assert JSON Path exists:$.data.total

判断响应数据——Response Body 中是否存在此路径

(13)、线程组右键 <<< 添加 <<< 监听器 <<< 查看结果树

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

在这里插入图片描述

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

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

3.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.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

Expect null:勾选后,验证根据JSONPath提取的值,是否为 null;使用时,需勾选 Assert JSON Path exists

3.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):对断言结果取反


http://www.ppmy.cn/news/150243.html

相关文章

linux调节屏幕软件下载,touchscale屏幕电子秤

touchscale屏幕电子秤是一款可以让你的手机变成体重秤的平台&#xff0c;在平台中大家可以把自己的手机进行称重处理&#xff0c;这个功能最新在全网中非常火爆&#xff0c;对这个新奇玩意感性的朋友可以试一试&#xff01; touchscale屏幕电子秤简介&#xff1a; 1、只要手机有…

营养电子秤控制板方案

一、产品介绍 营养电子秤是用于烹饪时精确计量使用食物原料的重量的一种工具。电子产品方案开发商所设计的营养电子秤主要由ADC芯片和电路模块、压力传感器及LCD显示屏等组成。 二、功能设计 开机方式&#xff1a;上电自动开机或按键开机 单位和显示分度&#xff1a;支持三个单…

基于51单片机的智能电子秤设计

具体实现功能 系统由STC89C51单片机最小系统LCD1602液晶显示模块HX711AD模块LED模块蜂鸣器按键模块10kg压力传感器构成。 具体功能&#xff1a; 1、数码管显示当前的重量&#xff0c;单位是g&#xff1b; 2、有去皮和清零功能&#xff0c;可以通过三个按键微调校准重量&…

关于小米、华为、苹果homekit等智能家居品牌的一些解析

随着科技的进步与人民生活水平的提高&#xff0c;人工智能家庭化在最近几年的得到了蓬勃发展&#xff0c;智能家居也走进了很多家庭。 可能很多人会觉得智能家居价格会比较昂贵&#xff0c;但其实智能家居发展到现在&#xff0c;很多的价格已经调整到我们普通用户能够接受的消…

地磅称重管理系统智能称重——称重软件必备的10大功能

称重软件的具体功能描述如下&#xff1a; 1.前置信息功能:常用信息&#xff0c;如发货单位、收货单位、车号、皮重、货物名称、规格型号、单价、称重类型等。&#xff0c;可以提前预存在系统中。称重时可以直接点击选择&#xff0c;提高称重速度。称重时也可以手动输入相关信息…

基于stm32单片机体重秤电子秤超重提醒

资料编号&#xff1a;107 下面是相关功能视频演示&#xff1a; 107-基于stm32单片机体重秤电子秤称重超重报警Proteus仿真&#xff08;源码仿真全套资料&#xff09; 功能介绍&#xff1a; 采用stm32单片机&#xff0c;可以设置称重上限制&#xff0c;LCD1602显示重量&#x…

电子秤原理

5Kg 电子秤开发教程 一、 主要框图连接说明&#xff1a; 二、测重原理讲解&#xff1a; 1. 满量程输出电压激励电压*灵敏度 1.0mv/v 例如&#xff1a;供电电压是 5v 乘以灵敏度 1.0mv/v满量程 5mv。 相当于有 5Kg 重力产生时候产生 5mV 的电压。 2. 概述&#xff1a;711 模块 …

电子秤结构分析与设计

问题介绍 电子秤具有计量精度高、抗偏载能力强以及易加工、结构简单紧凑等优势&#xff0c;在生活中具有广泛的应用&#xff0c;其工作原理为&#xff1a;采用应变片测量电子秤压力敏感元件的结构变形&#xff0c;后续构建电桥电路&#xff0c;通过采集输出电压信号的幅值实现电…