jmeter-beanshell学习2-beanshell断言

继续写,之前写了获取变量,设置变量,今天先写个简单点的断言。

一般情况用响应断言,就挺好使,但是自动化还要生成报告,如果断言失败了,要保存结果,只能用beanshell处理,顺便把断言一起做了,这时候用beanshell断言正合适。

还用这个接口,上次已经提取了id和name,这次直接用这俩断言。先写个简单的,为了看到断言效果,写个错误的:如果id不等于3,就报错。看断言

id=vars.get("id");

name=vars.get("name");

if (!id.equals("3")){

Failure=true;

}

再执行,Failure=true;表示断言没通过。

结果树显示为红色,看一下断言提示

如果存在多个断言,这里看不出来是哪个断言没通过,本来会生成报告的,结果树可能根本都不看,这个提示也没啥用,但是昨天遇到个报错,根据经验就是断言没通过,报告里就是给写了通过,看提示,应该也能打印出message,再给加上。

id=vars.get("id");

name=vars.get("name");

if (!id.equals("3")){

Failure=true;

FailureMessage="id不为3。";

}

如果同时判断id不等于3,且name等于xiaohua,就报错:

id=vars.get("id");

name=vars.get("name");

if ((!id.equals("3"))&&(name.equals("xiaohua"))){

Failure=true;

FailureMessage="id不为3。";

}

一定要把每个判断都用括号括起来,不然判断不生效。且用&&,或用||。

结果树报红只是顺便,自动化要生成报告,每次判断失败还要记录结果,再加上记录结果

result_message="";

id=vars.get("id");

name=vars.get("name");

if ((!id.equals("3"))&&(!name.equals("xiaohua"))){

Failure=true;

FailureMessage="id不为3。";

result_message+="id预期为:3,实际结果为:"+id+",";

vars.put("result_message",result_message);

return

}

先定义一个变量,result_message,用这个记录结果,接口自动化,不能只发个接口就结束了,还要判断数据库记录的对不对,或者可能还有后续接口,一起验,所以不管这里报错还是成功,后续该验的还是要有,如果后面还有报错,就一起都写在这个result_message里,下面用个vars.put,后面其他beanshell再get获取,就能继续加验证结果了。这一个接口已经有断言失败了,加上一个return,后面的其他断言分支就不会再走了,直接进行后面的其他请求。

写到这里有个问题,如果这个断言全部通过,就不会走到if分支里,也就不会再有vars.put("result_message",result_message);了,后面其他验证收不到result_message。这时候要优化脚本,我在断言前面加了个前置处理器:beanshell预处理器,把定义result_message直接放到这里,保证后面不管哪个断言失败,都能取到result_message,再往里添加其他报错。

在断言时候,先获取一次result_message就可以了。前面用的beansehll预处理,这个元件我也说不上来具体有什么特点,取请求报文内容的时候,也用的这个,如果想把result_message再往前放,也可以用取样器,看自己需要。

现在断言记录结果先这样,明天继续写。

相关推荐
ZH15455891313 小时前
Flutter for OpenHarmony Python学习助手实战:GUI桌面应用开发的实现
python·学习·flutter
编程小白20263 小时前
从 C++ 基础到效率翻倍:Qt 开发环境搭建与Windows 神级快捷键指南
开发语言·c++·windows·qt·学习
学历真的很重要3 小时前
【系统架构师】第二章 操作系统知识 - 第二部分:进程与线程(补充版)
学习·职场和发展·系统架构·系统架构师
深蓝海拓4 小时前
PySide6,QCoreApplication::aboutToQuit与QtQore.qAddPostRoutine:退出前后的清理工作
笔记·python·qt·学习·pyqt
酒鼎4 小时前
学习笔记(3)HTML5新特性(第2章)
笔记·学习·html5
L***一4 小时前
2026届大专跨境电商专业毕业生就业能力提升路径探析
学习
.小墨迹4 小时前
apollo学习之借道超车的速度规划
linux·c++·学习·算法·ubuntu
ZH15455891314 小时前
Flutter for OpenHarmony Python学习助手实战:模块与包管理的实现
python·学习·flutter
Gain_chance4 小时前
33-学习笔记尚硅谷数仓搭建-DWS层交易域用户粒度订单表分析及设计代码
数据库·数据仓库·hive·笔记·学习·datagrip
hqyjzsb4 小时前
盲目用AI提效?当心陷入“工具奴”陷阱,效率不增反降
人工智能·学习·职场和发展·创业创新·学习方法·业界资讯·远程工作