GVKun编程网logo

Jmeter---BeanShell 常用的 vars, get, props, put ,log用法(jmeter beanshell函数)

24

针对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函数)

Jmeter---BeanShell 常用的 vars, get, props, put ,log用法(jmeter beanshell函数)

BeanShell介

BeanShell是用Java写成的,一个小型的、免费的、可以下载的、嵌入式的Java源代码解释器,具有对象脚本语言特性。本篇只记录一下基本的使用。有以下五个组件:

  • Beanshell Sampler
  • Beanshell PreProcessor
  • Beanshell PostProcessor
  • Beanshell Assertion
  • __Beanshell Function

常用变量:

1.vars: 实际引用Jmeter线程的局部变量, 连通Jmeter 和 beanshell
    vars.get(String key) //获取变量值
 vars.put(String key, String value) //存储value到变量key
 
2.log: 写入信息到日志中,log.info(""),括号放置需要的变量
3.prev:获取前一个sample的响应;
 getResponseDataAsString()
 getResponseCode()
4.props:class java.util.Properties
   变量属性复制给变量props.put("some_variable",vars.get("some_variable"))
 

Jmeter Log

1.Jmeter日志默认存放在%JMeter_HOME%\bil\JMeter.log, 脚本中使用log.info("") 打印需要的日志信息
 
2.JMeter里面点击右上角可以打开日志窗口

 

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.get()方法用于读取变量值:
如:vars.get("goodId");
如果传递的 variable_name 预先不存在,将返回null.
 

保存对象:

vars保存对象类型(包括List, Map, closure之类),使用如下方法:
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 继承了Hashtable的累,所以拥有与vars类似的get和put 方法, 另外还有继承Hashtable的其他方法:
判断某属性是否存在, 返回布尔值
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常用代码段

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)

java – 在BeanShell中定义一个列表(jmeter)

任何人都可以帮助使用Bean Shell脚本吗?
所以,我正在尝试在我的代码示例中使用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.

解决方法

最后,解决为list = new ArrayList();

Jmeter -bean shell 常用内置变量

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 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目录中。

clipboard.png

今天关于Jmeter---BeanShell 常用的 vars, get, props, put ,log用法jmeter beanshell函数的分享就到这里,希望大家有所收获,若想了解更多关于01jmeter-beanshell常用代码段、java – 在BeanShell中定义一个列表(jmeter)、Jmeter -bean shell 常用内置变量、JMeter Beanshell等相关知识,可以在本站进行查询。

本文标签: