当前位置: 首页 > news >正文

Jmeter的元件使用介绍:(八)断言器详解

Jmeter有许多断言器,如:响应断言、Json断言、Beanshell断言、持续时间断言、大小断言、Xpath断言、Html断言。此文主要介绍前面4种断言的使用,其他断言器使用非常少,此处不作多介绍。使用过程中需要注意作用域的问题,(1)如果在测试计划下添加断言器,那该断言器会对整个测试计划下的取样器断言(2)如果在线程组下添加断言器,那么对加了断言器的线程组断言(3)如果在取样器添加断言器,那么只对当前取样器断言。(4)如果作用域下存在多个断言器,断言器会叠加。

下面介绍几种断言器的使用
一:响应断言
该种断言器一般放到具体的取样器下,断言具体的取样器是否包含自己的预期内容。
 


1:测试字段
(1)响应文本:对响应的文本做断言,此选项不包含响应头信息
(2)响应代码:对响应的状态码断言
(3)响应信息:对响应的全部信息做断言,此选项包含响应所有信息
(4)响应头:对响应头做断言
(5)请求头:对请求头做断言
(6)URL样本:对取样器URL做断言
(7)文档:对响应文档内容断言,至今未使用过
(8)忽略状态:博主也没使用过,应该不怎么使用,默认即可
(9)请求数据:对请求数据做断言
2、模式匹配规则
(1)包括:延段测试字段是否包含指定的文本或者字段值,支持正则表达式
(2)匹配:断言测试字段是否与期望值完全匹配,一般需要结合正则表达式使用
(3)相等:断言测试字段是否与期望值完全相等,此处不支持正则表达式
(4)字符串:断言测试字段是否包含指定的字符串,不支持正则表达式
(5)否:不进行匹配
(6)或者:博主也没使用过,默认即可
3、自定义失败消息
对于断言不通过的时候,可以输出自定义的失败消息

实例:
对百度发起请求,断言响应信息是否包含“百度”字符串,如果包含即断言成功,不包含则断言失败,自定义失败消息“该请求断言不通过噢噢噢”
 


执行结果:

二:断言持续时间
该断言器一般添加在测试计划或者线程组下,用来断言脚本下所有取样器是否在指定时间内完成了请求和响应

三:Json断言器
该断言器一般添加到指定取样器下。可以使用Json表达式提取指定断言字段进行断言,断言方式支持正则表达式。
例子:对【聚合数据】提供的新闻列表API请求做断言,通过author_name字段是否包含“人民资讯”进行断言。
响应数据格式如下:

断言器设计:

执行结果:由于包含指定字符串,所以断言结果是通过的。

四:Beanshell断言器
博主极力推荐使用该种断言器,功能最为强大,使用简单。
前面介绍过的Beanshell前置处理器语法在这里都可以使用上,要看Beanshell基础语法可以看前面的博客:
Jmeter全方面讲解——Jmeter的元件使用介绍:(四)前置处理器详解 - 筱筱创 - 博客园
Beanshell断言器添加了几个主要的内置对象的使用:
1、Failure:如果Failure=true;则声明断言失败
2、FailureMessage:可以自定义指定断言器的断言输出报告

下面使用Beanshell断言器对【聚合数据】提供的新闻列表API请求做断言。

查看代码

String response = prev.getResponseDataAsString();//获取响应信息
String code=prev.getResponseCode();//获取响应的状态码//断言状态码是否为200且响应信息是否包含字符串“人民资讯”,两者都满足才断言通过
if(response.contains("人民资讯")&&"200".equals(code)){
Failure = false;
log.info("新闻头条请求断言通过");
}else{
Failure = true;
FailureMessage="断言失败了哦";}

执行结果:

 

 

http://www.lryc.cn/news/601198.html

相关文章:

  • OpenResty 高并发揭秘:架构优势与 Linux 优化实践
  • 零基础学习性能测试第六章:性能难点-Jmeter实现海量用户压测
  • 人工智能与城市:城市生活的集成智能
  • FastAPI入门:查询参数模型、多个请求体参数
  • 元宇宙背景下治理模式:自治的乌托邦
  • 北大区块链技术与应用 笔记
  • solidity从入门到精通 第六章:安全第一
  • 【前后端】使用 PM2 管理 Node 进程
  • Baumer工业相机堡盟工业相机如何通过YoloV8深度学习模型实现标签条码一维码的检测(C#代码,UI界面版)
  • vue3.6更新哪些内容
  • 学习游戏制作记录(改进投掷剑的行为)7.27
  • Python 使用 asyncio 包处理并 发(避免阻塞型调用)
  • 创建属于自己的github Page主页
  • 【自动化运维神器Ansible】Ansible常用模块之archive模块详解
  • github上传本地项目过程记录
  • 【C语言网络编程基础】DNS 协议与请求详解
  • STM32的蓝牙通讯(HAL库)
  • 飞牛NAS本地化部署n8n打造个人AI工作流中心
  • 用 Flask 打造宠物店线上平台:从 0 到 1 的全栈开发实践
  • idea总结
  • JVM工具
  • 【优选算法】BFS解决FloodFill算法
  • Element表格单元格类名动态设置
  • VILA系列论文解读
  • 基于mnn架构在本地 c++运行llm与mllm模型
  • PostgreSQL AND OR 操作符详解
  • esp32s3创建rust工程 window成功mac
  • 前后端分离:架构模式与实践
  • Qt 分裂布局:QSplitter 使用指南
  • 四、搭建springCloudAlibaba2021.1版本分布式微服务-加入openFeign远程调用和sentinel流量控制