jmeter常用Beanshell脚本
发表于:2025-02-03 作者:千家信息网编辑
千家信息网最后更新 2025年02月03日,整理了一批jmeter常用的beanshell脚本供大家参考!时间戳import java.text.SimpleDateFormat;import java.util.Calendar;import
千家信息网最后更新 2025年02月03日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安全错误
数据库的锁怎样保障安全
服务器一直闪
八重天数据库修改
ssm框架数据库配置
网络安全第3版答案
路由器怎么设置服务器
宏基因云服务器
网络安全批示
数据库的功能和作用
提取两个列重复的数据库
基岩版服务器图片
数据库http请求长度
甘肃服务器硬盘
数据库对统计学有什么用
HCNA网络技术实验期末
土木工程还是软件开发
清远网络安全建设方案
在中央网络安全和信息化网络小组
服务器主板鸡血什么意思
自定义服务器丧尸模式
河南放心软件开发设施有哪些
为什么服务器在海里
信息系统网络安全认证
vba窗体刷新数据库
HCNA网络安全工作
网络安全知识专题讲座ppt
小米手机服务器
我的世界网易版天空之城服务器
天融信网络安全服务器
百度地图里的电话数据库
服务器core