jmeter常用Beanshell脚本
发表于:2025-12-02 作者:千家信息网编辑
千家信息网最后更新 2025年12月02日,整理了一批jmeter常用的beanshell脚本供大家参考!时间戳import java.text.SimpleDateFormat;import java.util.Calendar;import
千家信息网最后更新 2025年12月02日jmeter常用Beanshell脚本
整理了一批jmeter常用的beanshell脚本供大家参考!
时间戳
import java.text.SimpleDateFormat;import java.util.Calendar;import java.util.Date;try{Date date =new Date(); //获取当前时间SimpleDateFormat sf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");String nowDate = sf.format(date);Calendar cal = Calendar.getInstance();cal.setTime(sf.parse(nowDate));cal.add(Calendar.DAY_OF_YEAR,+0); String orderDate = sf.format(cal.getTime());cal.add(Calendar.DAY_OF_YEAR,+365); String senderDate = sf.format(cal.getTime());vars.put("orderDate",orderDate); //参数可以调用vars.put("senderDate",senderDate); //参数可以调用}catch(Exception e){}下载文件
import java.io.*;byte[] result = prev.getResponseData(); String file_name = "D:\\gongju\\apache-jmeter-3.2\\bin\\download\\sqlEnt_${id}.zip"; File file = new File(file_name); FileOutputStream out = new FileOutputStream(file);out.write(result);out.close();保存响应内容
FileWriter fstream = new FileWriter("XXX",true);BufferedWriter out =new BufferedWriter(fstream);out.write(vars.get("AAA")+","+ vars.get("BBB"));out.write(System.getProperty("line.separator"));out.close();fstream.close();断言
import java.io.UnsupportedEncodingException;import org.apache.jmeter.assertions.AssertionResult;import org.json.*;String str = prev.getResponseDataAsString();String result = "";try {result = java.net.URLDecoder.decode(str, "UTF-8");} catch (UnsupportedEncodingException e) {e.printStackTrace();}JSONObject data_obj=new JSONObject(str);String result1 = data_obj.get("dockedContact").get("name").toString();if(result1.contains("zhufc")) {Failure = true;FailureMessage = "断言成功";log.info("断言成功");}else{Failure = false;FailureMessage = "断言失败";}连接数据库
import java.sql.*;import java.util.*;import java.lang.*;import org.apache.regexp.*;import org.json.*;//一:数据库取值String drive = "org.gjt.mm.mysql.Driver";String url = "jdbc:mysql://192.168.204.129:3306/";String dbName = "aiopms";String user = "root";String pass = "000000";String history = "";String response = "";String failuer = "";String query ="SELECT projectid From pms_projects Where name ='测试项目' order by 'desc' limit 1";Connection Mycon = null;Statement Mystmt = null;ResultSet Myrset = null;try{ Mycon = DriverManager.getConnection(url+dbName, user, pass); } catch(SQLException e){ }Mystmt = Mycon.createStatement();Myrset = Mystmt.executeQuery(query);while (Myrset.next()){ history = Myrset.getString(1); } Myrset.close(); Mystmt.close(); if(history == ""){ Failure = true; FailureMessage = "连接数据库失败";}解析jsonlist
利用beanshell获取到json响应,然后通过JSONObject 和JSONArray 将数组解析,遍历数组的length之后,提取参数值
我们需要解析如下的json响应,提取出中间的Name和population
//导入json包import org.json.*;//获取获取请求的返回值String response_data = prev.getResponseDataAsString(); //日志打印获取请求的返回值log.info(response_data);//将String类型的返回值构造成JSONObject对象JSONObject data_obj = new JSONObject(response_data);//获取作为下一个请求post的参数值Province(两种方式)//String Provincelist_str = data_obj.get("Province").toString(); JSONArray Provincelist_str = data_obj.getJSONArray("Province");//log.info(Provincelist_str);//获取Province数组的长度int len = Provincelist_str.length(); String strlen = Integer.toString(len); vars.put("MessageNum",strlen);log.info(strlen);int i = 0;for(;i < len;++i){//获取 data[ i ] 数组对象JSONObject jsonTemp = (JSONObject)Provincelist_str.getJSONObject(i);switch(i){case 0://两种提取参数的写法String NameItems = jsonTemp.getString("Name");// String NameItems = jsonTemp.get("Name").toString();// 两种打印参数的方法// vars.put("Name_1", jsonTemp.getString("Name")); vars.put("Name_1", NameItems); log.info(NameItems);}}递归创建多级目录
import java.io.File; import java.io.FileNotFoundException; import java.io.FileWriter; import java.io.IOException; import java.io.RandomAccessFile; StringBuffer fileBuf=new StringBuffer(); String filePar = "D:\\\目录1\\目录2"; File myPath = new File( filePar ); if ( !myPath.exists()){ myPath.mkdirs(); System.out.println("创建文件夹路径为:"+ filePar); } String filename = "列表.csv"; try { FileWriter fw = new FileWriter(filePar + "\\\" + filename,true); String originalLine = ""+"\n"; System.out.println("*** "+ originalLine); fw.write(originalLine); fw.close(); } catch (IOException e) { e.printStackTrace(); }常用内置变量
1.log 打印日志,写入信息到jmeber.log文件。 2.SampleResult 获取SampleResult对象,能通过这个对象获取想要的信息。 3.Response 获取Response对象,能通过这个对象获取响应信息。 4.Failure 查看接口调使用能否成功,假如返回false是成功的,true是失败的。 5.FailureMessage 失败信息,没有设置的时候失败信息是空的,能set这个信息。 6.ResponseData 获取response body类型是byte[]。 7.ResponseCode 返回接口code成功是200。 8.ResponseMessage 获取msg成功是OK。 9.ResponseHeaders 获取接口服务端返回的头部信息。 10.RequestHeaders 获取用户端请求的头部信息。 11.SampleLabel 获取接口请求的名称。 12.SamplerData 获取请求的url和body。 13.ctx 代表上下文信息,能直接用。 14.vars即JMeterVariables,操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),常用方法: a) vars.get(String key):从jmeter中获得变量值; b) vars.put(String key,String value):数据存到jmeter变量中; 15.prev 获取前面的sample返回的信息,常用方法: a) prev.getResponseDataAsString():获取响应信息。 b) prev.getResponseCode() :获取响应code。
调用cmd文件
| 123 | String command = "cmd /c start D:\\apache-jmeter-3.2\\负载.bat";Runtime rt = Runtime.getRuntime();Process pr = rt.exec(command); |
GUI小命令
| 12345 | button = new JButton( "登录" );frame = new JFrame( "My Frame" );frame.getContentPane().add( button, "Center" );frame.pack();frame.setVisible(true); |
信息
成功
参数
对象
变量
常用
接口
数据
数组
文件
数据库
方法
目录
头部
日志
时间
类型
脚本
上下
上下文
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
网络安全进行多少次检测评估
个体户软件开发 起名
金融科技与中国互联网
服务器转发表
成都递四方软件开发
软件开发 硬件环境
服务器的cache
数据库事务冲突前向图
道闸系统数据库建立
中国服务器采购规模
48核服务器
太仓安卓软件开发
悟空云互联网科技公司
南京正规网络技术代理价钱
万能数据库转换工具中文正式版
网络安全管理工作方案。
网易大神服务器名
字节跳动网络安全
南京基础网络技术
政府机关网络安全排查
access 数据库查询
mt管理器查看服务器
网络安全评估业务
数据库出生日期比较年龄
论文网络安全摘要
软件开发离职一年
互联网科技有哪些公司
学生拍的青少年网络安全宣传片
集合在数据库中什么类型
sql2005数据库迁移