beanshell是jmeter内嵌的一个java解释器,大概175k,比较小,你可以在这个元件中运行自己的脚本,前置处理器,定时器,取样器,断言,监听器都有beanshell元件,但是都大同小异,先来看beanshell前置处理器
reset interpreter:是否每次都重启解释器,可以不用动,但是大并发量的情况下官方建议改为true
parameter:其中的数据会被自动转换出string类型,不需要加“”,第一个参数用bsh.args[0]调用,第二个参数用bsh.args[1]调用,Parameters可以引用全部的参数,如图所示:
File name:要引用的脚本地址
script:我们自己编写脚本的地方
常用的内置变量有:
log:log.info(string s),打印如上,也可以log.error(string s),不过这个会有红色警告
ctx:访问上下问,比如线程的编号等
vars:这个是最常用的,用来设置变量以便后面引用,常用的方法,vars.put(string s,string s1 ),vars.get(string s),vars.putObject(string s,Object o),vars.getObject(string s )
props:访问bin目录下面jmeter.properties中的各种属性,也可以修改,常用方法,props.put(string s,string s),props.get(string s)
prev:访问之前的取样器的内容,常用的prev.getResponseDataAsString(),返回的可能是json字符串,需要用json库去解析。
常用的beanshell有:
beanshell前置处理器:用来对数据进行处理,如接口的加密,通过jar包来对参数进行加密,jar包放在lib目录下
beanshell定时器:利用线程的sleep方法来灵活休眠
beashell后置处理器:调用prev变量来获取前面请求的返回值,头部信息等
beashell断言:这个是最好用的,当其他的断言无法满足需求时(如判断返回值是否是一个六位的整数),可以编写代码:
可以在这里做出一些判断,如果不满足则断言失败,方法为SampleResult.setSuccessful(false)或者Failure=true,也可以像上面一样利用prev获取响应的数据。
常用的就这些变量吧,其中ctx中有许多方法,如设置变量等,可以用于线程间的传参,prev可以获取请求和响应的所有内容(请求头,状态码等),总之功能很强大。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 10年+ .NET Coder 心语,封装的思维:从隐藏、稳定开始理解其本质意义
· .NET Core 中如何实现缓存的预热?
· 从 HTTP 原因短语缺失研究 HTTP/2 和 HTTP/3 的设计差异
· AI与.NET技术实操系列:向量存储与相似性搜索在 .NET 中的实现
· 基于Microsoft.Extensions.AI核心库实现RAG应用
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义
· 地球OL攻略 —— 某应届生求职总结
· 提示词工程——AI应用必不可少的技术
· Open-Sora 2.0 重磅开源!
· 周边上新:园子的第一款马克杯温暖上架