jemter常用的beanshell脚本

1. 打印日志,写入信息到jmeber.log文件。
 log.info
2.vars即JMeterVariables,操作jmeter变量,这个变量实际引用了JMeter线程中的局部变量容器(本质上是Map),常用方法:
 
a) vars.get(String key):从jmeter中获得变量值;
 
b) vars.put(String key,String value):数据存到jmeter变量中;

c) vars.putObject(String key,<T> value):数据存到jmeter变量中,但是数据类型不受限制;
 
3.prev 获取前面的sample返回的信息,常用方法:
 
a) prev.getResponseDataAsString():获取响应信息。
 
b) prev.getResponseCode() :获取响应code。

c) ${__P(变量名,)} 获取全局变量,可跨线程组

d) ${__setProperty(全局变量名,${线程组变量名},)}; 设置跨线程组的全局变量

4.list转为String[]
 List tagGroupMap = new List()
 String[] tagGroup = tagGroupMap.toArray(new String[tagGroupMap.size()]);

5、没有key值只有value的JSONArray
 JSONArray.getstring(i)
 
6.获取jsonobject的key值
JSONObject jsonObject = new JSONObject(str);
Iterator tagkeys = jsonObject.keys();
		while(tagkeys.hasNext()){
			// 获得key
			String key = tagkeys.next(); 
			log.info("key:"+key);
		}

7、截取部分线程组的名称
group = ctx.getThreadGroup(); // 获取当前线程组
str = group.getName(); // 获取线程组的名称
str = str.substring(0,2); // 截取字符串
vars.put("xc",str);
vars.put("result","true");

8、类型转换
如何将字串 String 转换成整数 int?
A. 有两个方法:
1). int i = Integer.parseInt([String]); 或
i = Integer.parseInt([String],[int radix]);
2). int i = Integer.valueOf(my_str).intValue();
注: 字串转成 Double, Float, Long 的方法大同小异.
2 如何将整数 int 转换成字串 String ?
A. 有叁种方法:
1.) String s = String.valueOf(i);
2.) String s = Integer.toString(i);
3.) String s = "" + i;
注: Double, Float, Long 转成字串的方法大同小异.

9、对一串字符串进行拆分,拆到字符串数组中
String str = "CG0011709140215,CG0011709140216";
String[] ss=str.split(",");
System.out.println(ss.length);

for(int i=0;i<ss.length;i++)
{
log.info(ss[i]);
String aa = "getresult-D";
aa = aa + i;
vars.put(aa,ss[i]);


10、时间戳
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); //此处+0为当前时间,+1为加一天,以此例推
String orderDate = sf.format(cal.getTime());
cal.add(Calendar.DAY_OF_YEAR,+365); //此处在之前的时间基础上叠加,+365为加1年
String senderDate = sf.format(cal.getTime());
vars.put("orderDate",orderDate); //参数可以调用
vars.put("senderDate",senderDate); //参数可以调用
}
catch(Exception e){
}


11、下载文件
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();

12、保存响应内容
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();

13、断言,查看接口调使用能否成功,假如返回false是成功的,true是失败的
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("key").toString();
		if(result1.contains("value")) {
		Failure = false;
		FailureMessage = "断言成功";
		log.info("断言成功");
		}else{
		Failure = true;
		FailureMessage = "断言成功";
		}

14、数据库操作
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 = "连接数据库失败";
}


15、浮点时间戳转换为标准时间
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);


16、解析json
//导入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);
}
}


17、递归创建多级目录
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(); 
            } 

 

  • 2
    点赞
  • 34
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值