前言:这篇文章主要向大家介绍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脚本,还不看一眼?相关推荐

  1. jmeter(四十五)常用Beanshell脚本

    整理了一批jmeter常用的beanshell脚本供大家参考! 时间戳 import java.text.SimpleDateFormat; import java.util.Calendar; im ...

  2. Jmeter 在 beanshell 脚本中写日志

    JMETER 在执行时,会写日志数据,我们在编写脚本的时候也可以自己写日志. 日志记录再jmeter 的bin 目录的 jmeter.log 文件中. jmeter 比较人性化,它在这里提供了脚本可以 ...

  3. Jmeter -常用Beanshell

    1. 写入文件 FileOutputStream fps = new FileOutputStream("C://Users//zhaocs//Desktop//test//test.csv ...

  4. 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 ...

  5. Jmeter使用BeanShell取样器调用Python脚本

    1.在线程组中按以下方式添加[BeanShell取样器]: 2.把以下这段代码放到[BeanShell取样器]的脚本区域: 注意点: (1)命令里的Python脚本路径改成自己脚本的路径,-t后面是填 ...

  6. jmeter beanshell脚本使用

    全局变量设置与调用 1.__setProperty 功能:该函数用来给JMeter属性设置值,默认返回值为空字符串,所以函数在任何地方被调用都是有效的. 作用域:跨线程组调用,可以在任意地方调用,但不 ...

  7. jmeter 使用beanshell 编写脚本

    目录 一.介绍 1.1 介绍 1.2 下载&启动 二.jmeter中创建beanshell脚本 三.jmeter与beanshell 数据交互 3.1 例子1 beanshell 将变量传给j ...

  8. jmeter吞吐量_深入理解Jmeter常用定时器

    bug 前言 jmeter并发测试每个请求之间是没有延时的,但实际工作有时候需要增加固定时间来测试,那么可以Jmeter定器组件,完成工作.其实这些知识百度一查就出来,为什么还要写,主要方便自己复习, ...

  9. Jmeter常用的Sampler取样器

    取样器指示 JMeter 向服务器发送请求 debug Sampler 是把我们自定义变量在response data里面显示出来. http Sampler 是JMeter里最常用的 名称:用于标识 ...

最新文章

  1. 自己整理的shell笔记
  2. 两个蓝牙模块配对的方法
  3. [vue] v-on可以绑定多个方法吗?
  4. 关于计算机考试网上操作的题目及答案,《计算机基础考试题及答案》.doc
  5. 5.1.3 SELECT+INNER JOIN读取数据
  6. Ubuntu18系统安装使用Nginx
  7. 百度网盘kbengine - warring项目下载地址
  8. 幂等校验是什么意思_什么是接口的幂等性,如何实现接口幂等性?一文搞定
  9. Kubernetes 小白学习笔记(18)--集群存储-volume、PV、PVC
  10. 似懂非懂的Comparable与Comparator
  11. C语言简单连点器网课必备
  12. TOM邮箱的全新域名,163vip.com、163vip.net,老朋友的新问候!
  13. 8/30 Hourglass网络原理
  14. java xtend_Eclipse Xtend对Java说:我帮你瘦身
  15. 抄袭/模仿/致敬的那些事:从《以父之名》说起(转)
  16. 新笔记本安装网卡驱动出现The Realtek Ethernet Controller was not found.If Deep Sleep Mode is enabled
  17. 计算机学院2022级新生邀请赛(二)
  18. JAVA_小小圣诞树
  19. adb自动化控制手机工具类
  20. 如何开展微博营销--开展微博营销的步骤

热门文章

  1. java svn 创建分支_SVN创建分支/合并分支/切换分支
  2. 教你用ps抽出抠散发
  3. matlab灰度图像分割标记,matlab – 分割灰度图像
  4. 【软件工程】需求分析
  5. 如何在互联网中隐藏自己
  6. Kerberos安装及使用3(Kerberos基本管理实践)
  7. 使用Flashbuilder/Flashbuilder-plugins搭建Flex工程每日构建(自动化构建)的方法
  8. 如何利用canvas画一个圆,并且填充颜色
  9. Win10如何升级Win11详细操作步骤
  10. 阿拉丁小游戏统计平台