Jmeter常用的几种断言方法

ops/2025/2/11 7:04:43/

🍅 点击文末小卡片 ,免费获取软件测试全套资料,资料在手,涨薪更快

在使用Jmeter进行性能测试或者接口自动化测试工作中,经常会用到的一个功能,就是断言,断言相当于检查点,它是用来判断系统返回的响应结果是否正确,以此帮我们判断测试是否通过。

本文主要介绍几种常用的断言:响应断言、JSON断言、BeanShell 断言

一、响应断言

1. 响应断言是最常用的一种断言方法,它可以对各种返回类型的结果进行断言,比如Test、html、application/json等

2. 在需要进行断言的Sample,点击右键》添加》断言》响应断言

在这里插入图片描述

3. Apply to选项默认即可,Main sample only(仅作用于父节点取样器)

在这里插入图片描述

4. 测试字段常用的有响应文本(对响应结果进行断言)、响应头(对响应头文件进行断言)

在这里插入图片描述

5. 模式匹配规则常用有包括(响应结果包括断言的内容),相等(响应结果和断言结果相同)

在这里插入图片描述

6. 测试模式可以添加你需要断言的部分,如果是包括,就可以添加多个

在这里插入图片描述

7. 执行测试,断言通过则显示绿色

在这里插入图片描述

8. 把断言改成响应结果不存在的字段,执行结果,显示红色,断言结果显示系统响应结果不包含“测试断言”字段

在这里插入图片描述

在这里插入图片描述

二、JSON断言

1. JSON断言也是测试工作中经常用到的一种断言方法,它只能针对响应结果是applicaton/json格式的请求进行断言

在这里插入图片描述


2. 在需要进行断言的Sample,点击右键》添加》断言》JSON断言
在这里插入图片描述

3. 我们使用json断言,一般是断言某个字段值是否返回的是我们需要的,所以需要写JSON PATH(不会写的看本人另外一篇文章有介绍如何写),下图使用正则模式匹配返回的结果包含40就认为响应结果满足要求,断言配置和响应结果如下所示:
在这里插入图片描述
在这里插入图片描述

4. 下面展示断言结果为常量时,如何进行断言设置,如下图所示
在这里插入图片描述
在这里插入图片描述

三、BeanShell断言

1. BeanShell断言支持各种开发语言,本文介绍使用java编写断言,使用BeanShell断言的好处是可以自由发挥,比如当断言失败,提示预期结果、实际结果,或者失败时把结果输出到日志

2. 在需要进行断言的Sample,点击右键》添加》断言》BeanShell断言

在这里插入图片描述

3. 如果使用包含匹配,只需要修改预期结果即可,预期结果需要写在双引号之间,中间的双引号需要添加\转义,如下:

在这里插入图片描述

String response = "";
String Str = "{\"errNo\":\"403\"";   //预期结果,需要校验的字段response = prev.getResponseDataAsString();    //获取当前请求响应结果if(response == ""){  Failure = true;  FailureMessage =   "系统无响应,获取不到响应数据!";  //对比数据库内容和响应内容,私用euqals方法判断是否一致  }
else if(response.contains(Str) == false){  //把断言失败置为真   Failure = true;    String Msg = "\n系统返回响应结果与期望结果不一致!请排查是性能问题,还是程序代码问题";       		          FailureMessage = Msg + "\n" + "期望结果:\n" + Str + "\n" + "响应内容: \n" + response +"\n";   }

4. 使用完全相等匹配,并且失败时,输出结果到日志,本次把预期结果改错,所以会输出响应结果到错误日志,代码如下:

在这里插入图片描述

在这里插入图片描述

String response = "";
String Str = "{\"errNo\":\"401\"";   //预期结果,需要校验的字段response = prev.getResponseDataAsString();    //获取当前请求响应结果if(response == ""){  Failure = true;  FailureMessage =   "系统无响应,获取不到响应数据!";  log.info(FailureMessage);//对比数据库内容和响应内容,私用euqals方法判断是否一致  }
else if(response.equals(Str) == false){  //把断言失败置为真   Failure = true;    String Msg = "\n系统返回响应结果与期望结果不一致!请排查是性能问题,还是程序代码问题";       		          FailureMessage = Msg + "\n" + "期望结果:\n" + Str + "\n" + "响应内容: \n" + response +"\n";   log.info(FailureMessage);}

最后感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

这些资料,对于做【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。


http://www.ppmy.cn/ops/157163.html

相关文章

ARM Linux Qt使用JSON-RPC实现前后台分离

文章目录 1、前言2、解决方案2.1、JSON-RPC2.2、Qt中应用JSON-RPC的框架图2.3、优点2.4、JSON-RPC 1.0 协议规范 3、程序示例3.1、Linux C(只例举RPC Server相关程序)3.2、Qt程序(只例举RPC Client相关程序) 4、编译程序4.1、交叉…

Linux内核数据结构之链表

对于链表的优缺点,我们对比数组可以说出一些,但在随机存储的情况下,我们会选择链表来处理,而我们使用双向链表时,经常会定义成如下形式: struct list_node {TYPE data;struct list_node *prev,*next; }; 相对应的链表结构如下: 对于该数据结构定义,存在一个局限,整个…

【sqlite】python操作sqlite3(含测试)

个人小项目或者小团队,sqllite很适用,数据库封装操作如下 #!/usr/bin/env python # -*- coding: utf-8 -*- # Time : 2025-02-08 13:57 # Author : duxiaowei # File : connect_sqllite.py # Software: PyCharm """ sqllite操作, …

在 Spring Boot 项目中,bootstrap.yml 和 application.yml文件区别

在 Spring Boot 项目中,bootstrap.yml 和 application.yml 是两个常用的配置文件,它们的作用和加载顺序有所不同。以下是它们的详细说明: 1. bootstrap.yml 作用: bootstrap.yml 是 Spring Cloud 项目中的配置文件,用于…

无人机目标飞行跟踪

无人机目标飞行跟踪主要通过无人机搭载的摄像头或其他传感器采集环境信息,通过算法分析识别目标物体,并对其进行精确跟踪‌。‌无人机采用先进的控制算法和导航系统,根据目标的位置和运动状态动态调整飞行路径‌。这些算法能够处理传感器传来…

基于RK3588/RK3576+FPGA的巡检机器人六自由度机械臂的系统设计

当今巡检机器人机械臂在管廊隧道等复杂环境的作业过程中,经常面临空间狭窄 且障碍物密集的问题,这就要求机械臂具备在狭窄空间进行避障路径规划的能力。此 外,一些不确定性因素如在突发或异常环境条件下,机械臂的全局状态信息感知…

Excel中对单列数据进行去重筛选

在Excel中对单列数据进行去重筛选,可以按照以下步骤操作: 方法一:使用“删除重复项”功能 选择数据列:点击要处理的列头(如A列)。打开“删除重复项”: Excel 2007及以后版本:点击“…

Neo4j图数据库学习(二)——SpringBoot整合Neo4j

一. 前言 本文介绍如何通过SpringBoot整合Neo4j的方式,对图数据库进行简单的操作。 Neo4j和SpringBoot的知识不再赘述。关于Neo4j的基础知识,有兴趣可以看看作者上一篇的文章:Neo4j图数据库学习(一)——初识CQL 二. 前置准备 新建SpringBo…