jmeter--7.BeanShell
目录
1. beanshell常用语法
1.1 log:日志写入
1.2 vars:设置和引用局部变量(同线程组)
1.3 props:设置和引用全局变量(跨线程组)
1.4 prev:获取前一个请求返回的信息
2. beanshell调用java代码
2.1 beanshell直接调用java文件(针对单个文件)
2.2 beanshell直接调用jar包
3. beanshell调用python代码
3.1 beanshell调用无参函数
3.2 beanshell调用有参数的函数
1. beanshell常用语法
1.1 log:日志写入
log.info("测试"); //打印字符串
log.info(123+""); //打印数字需要拼接一个字符串,因为无法直接打印int
log.error("打印错误日志"); //打印错误日志使用error
System.out.println("java打印") //java打印,在控制台输出
输出结果
1.2 vars:设置和引用局部变量(同线程组)
- 通过用户自定义变量赋值,然后通过log.info(vars.get("key")); 的方式获取

- 通过提取器的方式获取需要的值

- 通过【vars.put("age","18"); 】进行设置变量,通过【log.info(vars.get("age"));】获取变量。可以是不同的BeanShell 取样器也可以使用beanshell处理器进行

1.3 props:设置和引用全局变量(跨线程组)
props.put("name","张三"); //设置值
log.info(props.get("name")); //获取值--跨线程组

1.4 prev:获取前一个请求返回的信息
log.info(prev.getResponseCode()+""); //获取上一个请求的响应码
log.info(prev.getResponseDataAsString()); //获取上一个请求的响应结果数据
2. beanshell调用java代码
2.1 beanshell直接调用java文件(针对单个文件)
java代码内容
package test;public class Test {public int add(int a,int b) {return a+b;}}
调用方法
- 将java文件放入指定路径中,然后通过beanshell调用文件路径
- 调用java代码并传值输出
source("D:/study/course/Jmeter/Test.java"); //通过source()引入java文件,这里的路径需要转义
int result = new Test().add(3,5); //创建一个对象,并且调用它的方法
log.info("调用java打印结果为:"+result+""); //打印
打印结果

2.2 beanshell直接调用jar包
在测试计划中引入jar包

调用方法
import test.Test; //导包
int result = new Test().add(5,1); //创建一个对象,并且调用它的方法
log.info("调用java打印结果为:"+result+""); //打印
打印结果

3. beanshell调用python代码
3.1 beanshell调用无参函数
python代码内容
import randomdef get_random():rd = str(random.randint(1,100))print(rd)if __name__ == "__main__":get_random()
调用方法
import java.io.BufferedReader; //导包
import java.io.InputStreamReader;String command = "cmd /c python D:/study/course/Jmeter/test.py"; //组建cmd命令并执行py文件
Runtime rt = Runtime.getRuntime(); //初始化一个运行时对象
Process pr = rt.exec(command); //通过运行时对象运行cmd命令。pr.waitFor(); //运行时等待//调用pr进程对象获取到它的输入流。读取pr文件流的内容,并且保存到reponse_data
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
StringBuilder response = new StringBuilder();
String line = "";
while((line=br.readLine())!=null){response.append(line);
};
String reponse_data = response.toString();
br.close();
log.info("通过python代码获取到的随机数:reponse_data:"+reponse_data);//打印返回的内容
打印结果

3.2 beanshell调用有参数的函数
python代码内容
def get_random():#接收cmd命令里面的参数parse = argparse.ArgumentParser()parse.add_argument("-t","--ticket")args = parse.parse_args()ticket = args.ticket#随机数times=str(int(time.time()))print(ticket+times) #打印if __name__ == "__main__":get_random()
调用方法-与无参数的区别就是在组建cmd命令并执行py文件时加一个参数的写入
import java.io.BufferedReader; //导包
import java.io.InputStreamReader;String command = "cmd /c python D:/study/course/Jmeter/test.py -t test--"; //组建cmd命令并执行py文件
Runtime rt = Runtime.getRuntime(); //初始化一个运行时对象
Process pr = rt.exec(command); //通过运行时对象运行cmd命令。pr.waitFor(); //运行时等待//调用pr进程对象获取到它的输入流。读取pr文件流的内容,并且保存到reponse_data
BufferedReader br = new BufferedReader(new InputStreamReader(pr.getInputStream()));
StringBuilder response = new StringBuilder();
String line = "";
while((line=br.readLine())!=null){response.append(line);
};
String reponse_data = response.toString();
br.close();
log.info("通过python代码获取到的随机数:reponse_data:"+reponse_data);//打印返回的内容
打印结果
相关文章:
jmeter--7.BeanShell
目录 1. beanshell常用语法 1.1 log:日志写入 1.2 vars:设置和引用局部变量(同线程组) 1.3 props:设置和引用全局变量(跨线程组) 1.4 prev:获取前一个请求返回的信息 2. beans…...
第 3 场 蓝桥杯小白入门赛 解题报告 | 珂学家 | 单调队列优化的DP + 三指针滑窗
前言 整体评价 T5, T6有点意思,这场小白入门场,好像没真正意义上的签到,整体感觉是这样。 A. 召唤神坤 思路: 前后缀拆解 #include <iostream> #include <algorithm> #include <vector> using namespace std;int main()…...
debian apt 装 mysql8
MySQL :: MySQL 8.0 参考手册 :: 2.5.5 使用来自 Oracle 的 Debian 软件包在 Linux 上安装 MySQL apt install -f lsb-release gnupg wget https://repo.mysql.com//mysql-apt-config_0.8.29-1_all.deb dpkg -i mysql-apt-config…...
LeetCode 每日一题 Day 37-43
终于考完试了,寒假期间将会每天持续更新! 447. 回旋镖的数量(Day 37) 给定平面上 n 对 互不相同 的点 points ,其中 points[i] [xi, yi] 。回旋镖 是由点 (i, j, k) 表示的元组 ,其中 i 和 j 之间的欧式距离和 i 和 k 之间的欧…...
产品百度百科怎么创建?产品如何上百度百科?
百度百科作为一个权威的信息平台,承载着巨大的流量和曝光度。对于一个产品来说,能够在百度百科上拥有一席之地,无疑是一种极高的荣誉,同时也是提升品牌知名度、增加信任度的重要手段。产品百度百科不仅能够详细、全面地介绍产品信…...
Vue keep-alive的使用和原理解析
✨ 专栏介绍 在当今Web开发领域中,构建交互性强、可复用且易于维护的用户界面是至关重要的。而Vue.js作为一款现代化且流行的JavaScript框架,正是为了满足这些需求而诞生。它采用了MVVM架构模式,并通过数据驱动和组件化的方式,使…...
Fine-tuning:个性化AI的妙术
在本篇文章中,我们将深入探讨Fine-tuning的概念、原理以及如何在实际项目中运用它,以此为初学者提供一份入门级的指南。 一、什么是大模型 ChatGPT大模型今年可谓是大火,在正式介绍大模型微调技术之前,为了方便大家理解,我们先对大模型做一个直观的抽象。 本质上,现在…...
说清楚Kubernetes、Docker、Dockershim、Containerd、runC、CRI、OCI的关系
Kubernetes v1.20版本 的 release note 里说 deprecated docker。并且在后续版本 v1.24 正式删除了 dockershim 组件,这对我们有什么影响呢?Kubernetes 1.20: The Raddest Release | Kubernetes 为了搞明白这件事情,以及理解一系列容器名词 …...
x-cmd pkg | trash-cli - 类 Unix 系统的命令行垃圾桶
目录 简介首次用户技术特点竞品和相关作品进一步阅读 简介 trash-cli 是类 Unix 系统的命令行垃圾桶,用于移动文件到回收站,同时会记录文件的原地址和删除日期。 该工具使用与 GNOME、KDE 和 XFCE 等桌面环境相同的垃圾桶,所以即使是非 …...
基于Java+SpringBoot+vue实现图书借阅和销售商城一体化系统
基于JavaSpringBootvue实现图书借阅和销售商城一体化系统 🍅 作者主页 央顺技术团队 🍅 欢迎点赞 👍 收藏 ⭐留言 📝 🍅 文末获取源码联系方式 📝 🍅 查看下方微信号获取联系方式 承接各种定制系…...
集成xxljob项目如何迁移到K8S
前言 大家好,今天我们将基于XXL-Job,探讨任务调度迁移到云端的相关话题。 XXL-Job是一款功能强大、易用可靠的国产分布式任务调度平台,是目前国内使用比较广泛的分布式任务调度平台之一。它的主要特点包括: 支持分布式、多线程…...
类型“{}”上不存在属性“xxx”。ts(2339)-解决方案集锦
类型“{}”上不存在属性“xxx”。ts(2339)-解决方案集锦 文章目录 类型“{}”上不存在属性“xxx”。ts(2339)-解决方案集锦一、方案一(优先尝试)二、方案二(优先尝试)三、方案三这该是多么痛苦的一篇笔记啊!࿰…...
【MQTT】使用MQTT在Spring Boot项目中实现异步消息通信
目录 使用MQTT在Spring Boot项目中实现异步消息通信步骤1:引入MQTT库依赖步骤2:配置MQTT连接信息步骤3:创建MQTT配置类步骤4:发送MQTT消息发布MQTT消息消费MQTT消息 总结 前置文章: (一)MQTT协议…...
Java 中泛型的基本使用
目录 一、泛型类的使用 二、泛型接口的使用 三、泛型方法的使用 相关测试 一、泛型类的使用 /* 泛型类,T 表示 Java 中的任意类型,也就是说构造方法中 data 属性可以传递任意类型的值*/ class ResultData<T>{Integer code;String msg;T data;p…...
Java初学者软件安装与idea快捷键
一.Java初学者软件安装 视频教程: 最通俗易懂的JDK、IDEA的安装使用权威指南_哔哩哔哩_bilibili 文档教程: Java 开发环境配置 | 菜鸟教程 (runoob.com) 二.java的快捷方式与插件 快捷键: 史上最全的IDEA快捷键总结_idea的快捷语法_扬帆…...
微信商家转账到零钱怎么开通?场景模板
商家转账到零钱是什么? 使用商家转账到零钱这个功能,可以让商户同时向多个用户的零钱转账。商户可以使用这个功能用于费用报销、员工福利发放、合作伙伴货款或分销返佣等场景,提高效率。 商家转账到零钱的使用场景有哪些? 商家…...
(菜鸟自学)搭建虚拟渗透实验室——安装Ubantu 8.10 靶机
安装Ubantu 8.10 靶机 新建虚拟机 选择Ubuntu系统 网络适配器模式选用桥接模式 镜像选用ubuntu8.10版本 点击“开启此虚拟机”以开始安装Ubuntu Linux系统 安装ubuntu 首先需要选择安装时的语言,这里选择“中文(简体)” 选择“安装…...
【JAVA】哪些集合类是线程安全的
🍎个人博客:个人主页 🏆个人专栏:JAVA ⛳️ 功不唐捐,玉汝于成 目录 前言 正文 Vector: HashTable: Collections.synchronizedList()、Collections.synchronizedSet()、Collections.syn…...
K8S 日志方案
一、统一日志管理的整体方案 通过应用和系统日志可以了解Kubernetes集群内所发生的事情,对于调试问题和监视集群活动来说日志非常有用。对于大部分的应用来说,都会具有某种日志机制。因此,大多数容器引擎同样被设计成支持某种日志机制。 对…...
GPT2 GPT3
what is prompt 综述1.Pre-train, Prompt, and Predict: A Systematic Survey of Prompting Methods in Natural Language Processing(五星好评) 综述2. Paradigm Shift in Natural Language Processing(四星推荐) 综述3. Pre-Trained Models: Past, Present and Future Pro…...
网络编程(Modbus进阶)
思维导图 Modbus RTU(先学一点理论) 概念 Modbus RTU 是工业自动化领域 最广泛应用的串行通信协议,由 Modicon 公司(现施耐德电气)于 1979 年推出。它以 高效率、强健性、易实现的特点成为工业控制系统的通信标准。 包…...
华为云AI开发平台ModelArts
华为云ModelArts:重塑AI开发流程的“智能引擎”与“创新加速器”! 在人工智能浪潮席卷全球的2025年,企业拥抱AI的意愿空前高涨,但技术门槛高、流程复杂、资源投入巨大的现实,却让许多创新构想止步于实验室。数据科学家…...
大型活动交通拥堵治理的视觉算法应用
大型活动下智慧交通的视觉分析应用 一、背景与挑战 大型活动(如演唱会、马拉松赛事、高考中考等)期间,城市交通面临瞬时人流车流激增、传统摄像头模糊、交通拥堵识别滞后等问题。以演唱会为例,暖城商圈曾因观众集中离场导致周边…...
pam_env.so模块配置解析
在PAM(Pluggable Authentication Modules)配置中, /etc/pam.d/su 文件相关配置含义如下: 配置解析 auth required pam_env.so1. 字段分解 字段值说明模块类型auth认证类模块,负责验证用户身份&am…...
五年级数学知识边界总结思考-下册
目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解:由来、作用与意义**一、知识点核心内容****二、知识点的由来:从生活实践到数学抽象****三、知识的作用:解决实际问题的工具****四、学习的意义:培养核心素养…...
浅谈不同二分算法的查找情况
二分算法原理比较简单,但是实际的算法模板却有很多,这一切都源于二分查找问题中的复杂情况和二分算法的边界处理,以下是博主对一些二分算法查找的情况分析。 需要说明的是,以下二分算法都是基于有序序列为升序有序的情况…...
Typeerror: cannot read properties of undefined (reading ‘XXX‘)
最近需要在离线机器上运行软件,所以得把软件用docker打包起来,大部分功能都没问题,出了一个奇怪的事情。同样的代码,在本机上用vscode可以运行起来,但是打包之后在docker里出现了问题。使用的是dialog组件,…...
Go 语言并发编程基础:无缓冲与有缓冲通道
在上一章节中,我们了解了 Channel 的基本用法。本章将重点分析 Go 中通道的两种类型 —— 无缓冲通道与有缓冲通道,它们在并发编程中各具特点和应用场景。 一、通道的基本分类 类型定义形式特点无缓冲通道make(chan T)发送和接收都必须准备好࿰…...
【MATLAB代码】基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),附源代码|订阅专栏后可直接查看
文章所述的代码实现了基于最大相关熵准则(MCC)的三维鲁棒卡尔曼滤波算法(MCC-KF),针对传感器观测数据中存在的脉冲型异常噪声问题,通过非线性加权机制提升滤波器的抗干扰能力。代码通过对比传统KF与MCC-KF在含异常值场景下的表现,验证了后者在状态估计鲁棒性方面的显著优…...
DeepSeek越强,Kimi越慌?
被DeepSeek吊打的Kimi,还有多少人在用? 去年,月之暗面创始人杨植麟别提有多风光了。90后清华学霸,国产大模型六小虎之一,手握十几亿美金的融资。旗下的AI助手Kimi烧钱如流水,单月光是投流就花费2个亿。 疯…...
