时间戳
下载文件
保存响应内容
断言
连接数据库
解析jsonlist
递归创建多级目录
常用内置变量
调用cmd文件
GUI小命令

时间戳
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。<br><br>

调用cmd文件
String command = "cmd /c start D:\\apache-jmeter-3.2\\负载.bat";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);

GUI小命令
button = new JButton( "登录" );
frame = new JFrame( "My Frame" );
frame.getContentPane().add( button, "Center" );
frame.pack();
frame.setVisible(true);

jmeter常用的beanshell脚本的更多相关文章

  1. JMeter学习-033-JMeter BeanShell 脚本应用实例之参数变量修改

    BeanShell脚本是JMeter自动化测试过程中不可或缺的提升技能之一,BeanShell脚本编写类似于Java脚本.它可以获取.修改系统定义或用户定义的变量值,同时也可以进行一些相应的测试数据处 ...

  2. JMeter学习-042-JMeter BeanShell 脚本应用实例之正则应用:正则提取,批量获取测试数据

    特别声明:本示例中,涉及的脚本及通过脚本获取的数据,仅可作为学习使用,禁止任何商业用途.若因使用人非法使用而构成违法或犯罪,由具体违法或犯罪的使用人自行承担.与本人及技术博客无关. 实际测试过程中经常 ...

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

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

  4. 性能测试八:jmeter进阶之beanshell

    * BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; * BeanShell是一种松散类型的脚本语言(这点和JS类似); * BeanShell是用Java ...

  5. jmeter断言之BeanShell断言

    1.添加BeanShell断言,在Script下面写断言脚本,常用的BeanShell脚本如下: if(!SampleResult.getResponseCode().equals("200 ...

  6. Jmeter常用脚本开发之Beanshell Sampler

    Beanshell Sampler Beanshell介绍:是一种完全符合java语法规范的脚本语言,且又拥有自己的一些语法和方法:是一种松散类型的脚本语言:它执行标准java语句和表达式,另外它还包 ...

  7. 【Jmeter测试】BeanShell介绍和使用

      BeanShell是什么? BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法; BeanShell是一种松散类型的脚本语言: BeanShell是用Jav ...

  8. jmeter常用四种断言

    jmeter常用四种断言 一.Response Assertion(响应断言)二.Size Assertion(数据包字节大小断言)三.Duration Assertion(持续时间断言)四.bean ...

  9. Jmeter Web 性能测试入门 (三):Jmeter 常用组件说明

    线程组:用来设置并发的数量和模式.是用来模拟用户并发的组件.JMeter 的每个任务都是用线程来处理的. 线程数:要并发的请求数量. Ramp-Up Period: 在多次时间内把这些并发的请求发送完 ...

随机推荐

  1. java 图形化界面 布局管理器

    package Layout; import java.awt.*; import javax.swing.*; public class MyBorderLayout extends JFrame{ ...

  2. curl上传图片(同域上传)

    先研究完curl同域上传图片然后再研究curl跨域上传,先把同域上传代码总结如下: index.php <?php //图片上传 $url = "http://192.168.1.23 ...

  3. UVA10561 Treblecross —— SG博弈

    题目链接:https://vjudge.net/problem/UVA-10561 题意: 两个人玩游戏,轮流操作:每次往里面添加一个X,第一个得到XXX的获胜. 题解: 详情请看<训练指南&g ...

  4. 编辑xml文件时不能自动提示问题的解决

    在编辑xml文件时,eclipse总是不能自动提示,在网上找了一些资料,大部分都是说关于xml editor配置的,下面也把这个方法罗列在下面,以供参考: 解决办法:在eclipse的菜单里,找到wi ...

  5. linux应用之apache服务的安装及配置(centos)

    CentOS Apache服务器安装与配置   一.安装Apache程序,一般有三种安装方式:1.直接网络安装:2.下载rpm包,上传至服务器进行安装:3.通过原代码编译安装: yum -y inst ...

  6. awk实现求和、平均、最大值和最小值的计算操作

    0.准备和数据文件 比如有一个数据文件,只有一列(在之前可以通过各种手段过滤出只有数字这一列),比如操作的响应时间 Txt代码  490898  1189235  20212  1494270  14 ...

  7. 在CentOs6.x 安装Cx_oracle5.x

    Setting up anything Oracle related is a huge pain. After hunting the web for info with minimal succe ...

  8. VOIP语音编码带宽计算

    VOIP Bandwidth consumption naturally depends on the codec used.  VOIP消耗的带宽一般取决于所使用的语音编码. When calcul ...

  9. juery的跨域请求2

    时间过得好快,又被拉回js战场时, 跨域问题这个伤疤又开疼了. 好在,有jquery帮忙,跨域问题似乎没那么难缠了.这次也借此机会对跨域问题来给刨根问底,结合实际的开发项目,查阅了相关资料,算是解决了 ...

  10. [HAOI 2012] 容易题

    [题目链接] https://www.lydsy.com/JudgeOnline/problem.php?id=2751 [算法] 考虑k = 0的情况 , 根据乘法原理 : Ans = (n * ( ...