你需要的jmeter常用Beanshell脚本,还不看一眼?
前言:这篇文章主要向大家介绍jmeter经常使用的Beanshell脚本,主要内容包括基础应用、实用技巧、原理机制等方面,希望对大家有所帮助。
1、利用jmeter自带函数获取系统当前时间
//当前时间
${__timeShift(,,,,)}
//增加一天
${__timeShift(,,P1d,,)}
//增加七天时间格式化
${__timeShift(yyyy-MM-dd,,P7d,,)}
//减少七天时间格式化
${__timeShift(yyyy-MM-dd,,-P20d,,)}
//当前时间时间格式化
${__timeShift(yyyy-MM-dd,,,,)}
//增加一H
${__timeShift(,,PT1H,,)}
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,,,)}
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,P1d,,)}
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,PT1H,,)}
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,PT10m,,)}
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,PT20S,,)}
${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,P1dT1H10m20s,,)}
${__time(YMDHMS,)}
${__time(YYYYMMDHMS,)}
2、手写java获取系统当前时间
package com.eric.excel;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;/*** @author Liweniang on 2019/10/22.* @version 1.0*/
SimpleDateFormat sdf=new SimpleDateFormat("yyyy-MM-dd"); //设置时间格式//今天
Calendar cal=Calendar.getInstance();
Date d= new Date();
String s= sdf.format(d); //格式化
vars.put("current_date", s);//昨天
Calendar cal0=Calendar.getInstance();
cal0.setTime(d);
cal0.add(Calendar.DATE, -1); // 日 +是往后推 -是向前推
t1=cal0.getTime();
String s1= sdf.format(t1); //格式化
vars.put("Yesterday_time", s1);//一年前
Calendar cal1=Calendar.getInstance();
cal1.setTime(d);
cal1.add(Calendar.MONTH, -12); // 月份 +是往后推 -是向前推
t2=cal1.getTime();
String s2= sdf.format(t2); //格式化
vars.put("One_Year_Ago", s2);//一年零一天前
Calendar cal2=Calendar.getInstance();
cal2.setTime(d);
cal2.add(Calendar.MONTH, -12); // 月份 +是往后推 -是向前推
cal2.add(Calendar.DATE, -1); // 日 +是往后推 -是向前推
t3=cal2.getTime();
String s3= sdf.format(t3); //格式化
vars.put("One_Year_Ago_beforeoneday", s3);//1个月前
Calendar cal3=Calendar.getInstance();
cal3.setTime(d);
cal3.add(Calendar.MONTH, -1); // 月份 +是往后推 -是向前推
t4=cal3.getTime();
String s4= sdf.format(t4); //格式化
vars.put("one_month_old", s4);//18个月零一天前
Calendar cal4=Calendar.getInstance();
cal4.setTime(d);
cal4.add(Calendar.MONTH, -18); // 月份 +是往后推 -是向前推
cal4.add(Calendar.DATE, -1); // 日 +是往后推 -是向前推
t5=cal4.getTime();
String s5= sdf.format(t5); //格式化
vars.put("Eighteen_Month_Ago_beforeoneday", s5);//一年前1个月
Calendar cal5=Calendar.getInstance();
cal5.setTime(d);
cal5.add(Calendar.MONTH, -13); // 月份 +是往后推 -是向前推
t6=cal5.getTime();
String s6= sdf.format(t6); //格式化
vars.put("One_month_a_year_ago", s6);
3、获取时间戳
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){}
4、下载文件
import java.io.*;
byte [] result = prev.getResponseData();
String file_name = "存放目录与文件名" ;
File file = new File(file_name);
FileOutputStream out = new FileOutputStream(file);
out.write(result);
out.close();
5、保存响应内容(如果响应内容为字符串数组,那需要转换成字符串)
FileWriter fstream = new FileWriter( "存放目录与文件名" , true );
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get( "需要保存的变量" )+ "," + vars.get( "需要保存的变量" ));
out.write(System.getProperty( "line.separator" ));
out.close();
fstream.close();
6、响应断言
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 = "断言失败" ;
}
7、链接数据库
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 = "链接数据库失败" ;
}
8、浮点时间戳转换为标准时间
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
//10位的秒级时间戳
long time1 = ${time}; //获取时间戳变量
String result1 = new SimpleDateFormat( "yyyy-MM-dd HH:mm:ss" ).format( new Date(time1 * 1000 ));
log.info( "10位时间戳(秒)--->Date:" +result1);//13位的毫秒级时间戳
//double time2 = 1515730332000d;
//String result2 = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss").format(time2);
//System.out.println("13位数的时间戳(毫秒)--->Date:" + result2);
9、解析jsonlist
//利用beanshell获取到json响应,而后经过JSONObject 和JSONArray 将数组解析,遍历数组的length以后,提取参数值
//导入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);
}
}
10、递归建立多级目录
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(); }
11、jmeter经常使用的内置变量
1、log 打印日志,写入信息到jmeber.log文件2、SampleResult 获取SampleResult对象,能经过这个对象获取想要的信息3、Response 获取Response对象,能经过这个对象获取响应信息4、Failure 查看接口调使用可否成功,假如返回 false 是成功的, true 是失败的5、FailureMessage 失败信息,没有设置的时候失败信息是空的,能set这个信息6、ResponseData 获取response body类型是 byte7、ResponseCode 返回接口code成功是 200 8、ResponseMessage 获取msg成功是OK9、ResponseHeaders 获取接口服务端返回的头部信息10、RequestHeaders 获取用户端请求的头部信息11、SampleLabel 获取接口请求的名称12、SamplerData 获取请求的url和body13、ctx 表明上下文信息,能直接用14、vars即JMeterVariables,操做jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),经常使用方法vars.get(String key):从jmeter中得到变量值vars.put(String key,String value):数据存到jmeter变量中15、prev 获取前面的sample返回的信息,经常使用方法prev.getResponseDataAsString():获取响应信息prev.getResponseCode() :获取响应
16、 调用cmd文件
String command = "cmd /c start D:\\apache-jmeter-3.2\\负载.bat" ;
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
17、GUI小命令
button = new JButton( "登陆" );
frame = new JFrame( "My Frame" );
frame.getContentPane().add( button, "Center" );
frame.pack();
frame.setVisible( true );
待更新…
你需要的jmeter常用Beanshell脚本,还不看一眼?相关推荐
- jmeter(四十五)常用Beanshell脚本
整理了一批jmeter常用的beanshell脚本供大家参考! 时间戳 import java.text.SimpleDateFormat; import java.util.Calendar; im ...
- Jmeter 在 beanshell 脚本中写日志
JMETER 在执行时,会写日志数据,我们在编写脚本的时候也可以自己写日志. 日志记录再jmeter 的bin 目录的 jmeter.log 文件中. jmeter 比较人性化,它在这里提供了脚本可以 ...
- Jmeter -常用Beanshell
1. 写入文件 FileOutputStream fps = new FileOutputStream("C://Users//zhaocs//Desktop//test//test.csv ...
- JMeter工具:常用协议脚本开发(BeanShell Sampler, Debug Sampler, FTP/Java/JDBC请求, JUnit request, SOAP/XML-RPC)
目录 1. BeanShell Sampler 1.1 BeanShell Timer:BeanShell定时器 1.2 BeanShell PreProcessor:BeanShell前置处理器 1 ...
- Jmeter使用BeanShell取样器调用Python脚本
1.在线程组中按以下方式添加[BeanShell取样器]: 2.把以下这段代码放到[BeanShell取样器]的脚本区域: 注意点: (1)命令里的Python脚本路径改成自己脚本的路径,-t后面是填 ...
- jmeter beanshell脚本使用
全局变量设置与调用 1.__setProperty 功能:该函数用来给JMeter属性设置值,默认返回值为空字符串,所以函数在任何地方被调用都是有效的. 作用域:跨线程组调用,可以在任意地方调用,但不 ...
- jmeter 使用beanshell 编写脚本
目录 一.介绍 1.1 介绍 1.2 下载&启动 二.jmeter中创建beanshell脚本 三.jmeter与beanshell 数据交互 3.1 例子1 beanshell 将变量传给j ...
- jmeter吞吐量_深入理解Jmeter常用定时器
bug 前言 jmeter并发测试每个请求之间是没有延时的,但实际工作有时候需要增加固定时间来测试,那么可以Jmeter定器组件,完成工作.其实这些知识百度一查就出来,为什么还要写,主要方便自己复习, ...
- Jmeter常用的Sampler取样器
取样器指示 JMeter 向服务器发送请求 debug Sampler 是把我们自定义变量在response data里面显示出来. http Sampler 是JMeter里最常用的 名称:用于标识 ...
最新文章
- 自己整理的shell笔记
- 两个蓝牙模块配对的方法
- [vue] v-on可以绑定多个方法吗?
- 关于计算机考试网上操作的题目及答案,《计算机基础考试题及答案》.doc
- 5.1.3 SELECT+INNER JOIN读取数据
- Ubuntu18系统安装使用Nginx
- 百度网盘kbengine - warring项目下载地址
- 幂等校验是什么意思_什么是接口的幂等性,如何实现接口幂等性?一文搞定
- Kubernetes 小白学习笔记(18)--集群存储-volume、PV、PVC
- 似懂非懂的Comparable与Comparator
- C语言简单连点器网课必备
- TOM邮箱的全新域名,163vip.com、163vip.net,老朋友的新问候!
- 8/30 Hourglass网络原理
- java xtend_Eclipse Xtend对Java说:我帮你瘦身
- 抄袭/模仿/致敬的那些事:从《以父之名》说起(转)
- 新笔记本安装网卡驱动出现The Realtek Ethernet Controller was not found.If Deep Sleep Mode is enabled
- 计算机学院2022级新生邀请赛(二)
- JAVA_小小圣诞树
- adb自动化控制手机工具类
- 如何开展微博营销--开展微博营销的步骤