针对Jmeter---BeanShell常用的vars,get,props,put,log用法和jmeterbeanshell函数这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展01jmet
针对Jmeter---BeanShell 常用的 vars, get, props, put ,log用法和jmeter beanshell函数这两个问题,本篇文章进行了详细的解答,同时本文还将给你拓展01jmeter-beanshell常用代码段、java – 在BeanShell中定义一个列表(jmeter)、Jmeter -bean shell 常用内置变量、JMeter Beanshell等相关知识,希望可以帮助到你。
本文目录一览:- Jmeter---BeanShell 常用的 vars, get, props, put ,log用法(jmeter beanshell函数)
- 01jmeter-beanshell常用代码段
- java – 在BeanShell中定义一个列表(jmeter)
- Jmeter -bean shell 常用内置变量
- JMeter Beanshell
Jmeter---BeanShell 常用的 vars, get, props, put ,log用法(jmeter beanshell函数)
BeanShell介
BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。本篇只记录一下基本的使用。有以下五个组件:
- Beanshell Sampler
- Beanshell PreProcessor
- Beanshell PostProcessor
- Beanshell Assertion
- __Beanshell Function
常用变量:
Jmeter Log

3.jmeter可以为不同的模块设置不同的日志级别,如下:看不懂????
vars和props 主要两点的区别:
vars 只能在档期线程内使用,props 可以跨线程租使用
vars 只能保持String 或者Objec, props 是 Hashtable 对象
vars
vars中的变量仅对当前线程组内可见, 跨线程组则需要使用属性。
读取变量使用 vars.put(var, value)函数, 例如:
vars.put("new_value", value) ;
注意:上面的“new_value”必须是字符串类型, 传递其他类型,包括null,都会报错,如果想使用数字,数字等类型,一种方法是做类型转换
vars.put("MUST_BE_STRING", "" + 1);
vars.put("MUST_BE_STRING", (String)1);
vars.put("MUST_BE_STRING", [2, 3, 4].toString());
vars.put("MUST_BE_STRING", (String)[1,2]);
vars.put("MUST_BE_STRING", "" + [2, 3, 4]);
vars.put("MUST_BE_STRING", "" + true);
vars.put("MUST_BE_STRING", true.toString());
另一种方法是使用对象存储方法。
读取字符串变量:
保存对象:
vars.putObject("object_name", Object);
例如:
vars.putObject("NUMBER", 1);
vars.putObject("ARRAY", []);
vars.putObject("CLOSURE", { x, y -> x+y });
读取对象:
vars读取对象类型,使用如下方法:
vars.getObject("OBJECT_NAME");
props
props.containsKey("PROPERTY_NAME")
判断某项值是否存在,返回布尔值:
props.contains("PROPERTY_VALUE")
删除某个值
props.remove("PROPERTY_NAME")
所有属性以字符串形式表示
props.toString()
上面所有内容均来自下面两个文章:
https://www.lfhacks.com/tech/jmeter-vars-props
https://www.jianshu.com/p/2341b901cd4a
01jmeter-beanshell常用代码段
1.获取时间
import java.util.*; import java.text.SimpleDateFormat; String str1 = (new SimpleDateFormat("yyyy-MM-dd hh:mm:ss")).format(new Date()); //获取当前时间 var Now_date = new Date().getTime(); //获取当前时间戳 vars.put("ts",Now_date.toString()); //设置为jmeter的全局变量 Calendar cal =Calendar.getInstance(); cal.add(Calendar.DATE,-1); String yesterday=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss").format(cal.getTime()); //昨天 vars.put("d",yesterday); //设置为jmeter全局变量 引用变量:${d}
2.生成随机数
import org.apache.commons.lang3.RandomUtils; int group_no =RandomUtils.nextInt(1,999); vars.put("gp",group_no.toString());
3.打印变量到cmd控制台
System.out.println("d is:"+vars.get("d")); //打印昨天(1中的d)
涉及到beanshell的地方:
a.测试计划-鼠标右键-添加-前置处理器/后置处理器-beanshell PreProcessor/beanshell-PostProcessor
b.线程组-鼠标右键-添加-前置处理器/后置处理器-beanshell PreProcessor/beanshell-PostProcessor
c.取样器-鼠标右键-添加-前置处理器/后置处理器-beanshell PreProcessor/beanshell-PostProcessor
示例:
java – 在BeanShell中定义一个列表(jmeter)
所以,我正在尝试在我的代码示例中使用List,但是,我无法正确定义列表.
来自BeanShell PostProcessor采样器的代码如下:
import java.io.*; import java.util.*; import org.json.*; import org.apache.jmeter.samplers.SampleResult; if ((prev.getResponseCode() != null) && (prev.getResponseCode().equals("200") == true)) { JSONObject response = new JSONObject(prev.getResponseDataAsstring()); JSONArray array = response.getJSONArray("users"); List<String> users_list = new ArrayList<String>(); for(int i = 0; i < array.length(); i++) { JSONObject object = array.getJSONObject(i); users_list.add(object.getString("user_id")); print(users_list); } } jmeter.extractor.BeanShellPostProcessor: Problem in BeanShell script org.apache.jorphan.util.JMeterException: Error invoking bsh method: eval In file: inline evaluation of: ``import java.io.*; import java.util.*; import org.json.*; import org.apache.jmete . . . '' Encountered "=" at line 10,column 31.
解决方法
Jmeter -bean shell 常用内置变量
1、log(jmeter.log),用法:log.info("Jmeter log info");
2、vars (JMeterVariables),这个变量实际引用了JMeter线程中的局部变量容器,常用方法:
vars.get(String key) ---从Jmeter获取变量
vars.put(String key, String value) ---将数据存储到Jmeter变量中
3、props (JMeterProperties),操作Jmeter属性,与vars类似,不同之处是put只能是string类型不能是对象,
props.get("START.HMS"); 注:START.HMS为属性名,在文件jmeter.properties中定义
props.put("PROP1","1234");
4、prev - (SampleResult):获取前面的sample返回的信息,常用方法:
getResponseDataAsstring():获取响应信息
getResponseCode() :获取响应code
引用
https://www.bbsmax.com/A/obzbM8v3dE/
JMeter Beanshell
Jmeter实现对字符串加密
package com.wjika.test;
import java.security.MessageDigest;
import java.security.NoSuchAlgorithmException;
public class mymd5
{
public static String getMd5(String plainText)
{
try{
MessageDigest md = MessageDigest.getInstance("MD5");
md.update(plainText.getBytes());
byte b[] = md.digest();
int i;
StringBuffer buf = new StringBuffer("");
for (int offset = 0; offset < b.length; offset++) {
i = b[offset];
if (i < 0) i
+= 256;
if (i < 16)
buf.append("0"); buf.append(Integer.toHexString(i));
}
//32位加密
return buf.toString();
// 16位的加密
//return buf.toString().substring(8, 24);
} catch (NoSuchAlgorithmException e) {
e.printStackTrace();
return null;
}
}
}
生成Jar包放入jmeterlib目录中。
今天关于Jmeter---BeanShell 常用的 vars, get, props, put ,log用法和jmeter beanshell函数的分享就到这里,希望大家有所收获,若想了解更多关于01jmeter-beanshell常用代码段、java – 在BeanShell中定义一个列表(jmeter)、Jmeter -bean shell 常用内置变量、JMeter Beanshell等相关知识,可以在本站进行查询。
本文标签: