【Jmeter】BeanShell介绍和常用语法

BeanShell是什么?

  • BeanShell是一种完全符合Java语法规范的脚本语言,并且又拥有自己的一些语法和方法;
  • BeanShell是一种松散类型的脚本语言;
  • BeanShell是用Java写成的,一个小型的、免费的、可以下载、嵌入式的Java源代码解释器,具有对象脚本的特性;
  • BeanShell可以执行标准Java语句和表达式,以及另外自身的一些脚本命令和语法。

Jmeter中有哪些BeanShell组件

  • 定时器:BeanShell Timer
  • 前置处理器:BeanShell PreProcessor
  • 采样器:BeanShell Sampler
  • 后置处理器:BeanShell PostProcessor
  • 断言:BeanShell Assert(使用方法连接)
  • 监听器:BeanShell Listener

BeanShell常用内置变量

Jmeter在它的BeanShell中内置了变量,用户可以通过这些变量和Jmeter进行交互,其中主要的变量及使用方法如下:

import java.time.LocalDateTime;
import java.time.format.DateTimeFormatter;
import java.util.HashMap;
import org.apache.jmeter.samplers.SampleResult;
import org.apache.jmeter.threads.JMeterVariables;

LocalDateTime time = LocalDateTime.now();
String date = time.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
//打印调试日志写入。写入信息到jmeter.log
log.info("----->" + date);
//****************************vars使用********************************//
//变量生成
vars.put("tmp" , date);
//变量读取
String date1 = vars.get("tmp");
log.info("值读取测试结果1------>" + date1);
String date = "${tmp}";
log.info("值读取测试结果2------>" + date1);
//直接获取jmeter自动生成的参数变量,COOKIE__gh_sess 存放了cookies信息,是系统自动添加的
log.info(vars.get("COOKIE__gh_sess"));
//操作map类型注意事项
HashMap map = new HashMap(5);
map.put("test1", "1");
log.info(map.toString());
//************************ctx使用\SampleResult 用法***********************************//

//获取Jmeter当前运行时变量集合。
JMeterVariables var = ctx.getVariables();
//增加变量集合
var.put("hello"," hello world");

//SampleResult需要import对象
import org.apache.jmeter.samplers.SampleResult;
//ctx上下文信息获取,获取上一个请求result 
SampleResult result = ctx.getPreviousResult();
//getRequestHeaders()方法返回String字符串
String RequestHeaders = result.getRequestHeaders();
//getResponseHeaders() 返回响应headers
String ResponseHeaders = result.getResponseHeaders() 
//getResponseCode() 返回响应状态码字符串
String responseCode = result.getResponseCode();
//getURL() 返回请求URL对象 
URL url = result.getURL();
//获取上一个请求的响应信息
String code = result.getDataType();

//设置当前的sampler的code
ResponseCode = 500;
//设置当前的sampler的message
ResponseMessage = "This is a test";
//***********************prev信息*******//
#获取响应信息
String str = prev.getResponseDataAsString();
#获取响应Code
String str = prev.getResponseCode();

BeanShell导入JAR包并调用接口

package com.welab.sun.util;

import java.util.Arrays;
import java.util.Map;

import org.apache.commons.codec.digest.DigestUtils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.JSONObject;
import com.alibaba.fastjson.parser.Feature;

/**
 * 测试签名
 * 
 * @author one.xu
 *
 */
public final class SignatureUtil {
	private SignatureUtil() {
	}

	public static String getSignature(String json, String secret) {
	
“”“”“”
省略
“”“”“”
}
}

导出jar包叫sunSignature.jar
导出Jar包如下,并将此jar包复制到 jemeter跟目录 \lib\ext 之后重启jemeter

BeanShell脚本如下:


#引用时必须加.*,com.welab.sun.util是包名
import com.welab.sun.util.*;
SignatureUtil sign = new SignatureUtil();
String Signature=sign.getSignature(json,secret);
vars.put("Signature",Signature);

如果遇到class找不到,可能是导入包有冲突,多加几种导入方式

  • 2
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
BeanShell是一种类似于Java的脚本语言,它可以在JMeter中使用。以下是一些BeanShell语法的基本要点: 1. 变量声明和赋值: - 使用关键字 `var` 来声明变量,例如:`var x;` - 可以在声明时同时赋初值,例如:`var x = 10;` - 变量类型是根据赋值自动推断的。 2. 脚本注释: - 使用 `//` 进行单行注释,例如:`// 这是注释` - 使用 `/* ... */` 进行多行注释,例如: ``` /* * 这是多行注释 * 第二行 */ ``` 3. 控制流语句: - `if` 条件语句: ``` if (condition) { // 执行代码块 } else if (condition) { // 执行代码块 } else { // 执行代码块 } ``` - `for` 循环语句: ``` for (initialization; condition; update) { // 执行循环体代码块 } ``` - `while` 循环语句: ``` while (condition) { // 执行循环体代码块 } ``` 4. 方法和函数: - 定义方法: ``` return_type methodName(parameter1, parameter2, ...) { // 方法体 return value; } ``` - 调用方法:`methodName(argument1, argument2, ...)` 5. 输出信息: - 使用 `print` 或 `println` 来输出信息,例如:`print("Hello, world!");` 6. JMeter相关对象和方法: - JMeter提供了一些内置的对象和方法,例如:`vars`, `props`, `ctx`, `prev`, `log` 等。可以在BeanShell脚本中使用这些对象和方法来获取和操作测试相关的数据。 这些是BeanShell语法的一些基本要点。你可以根据具体的需求和场景,在BeanShell脚本中使用这些语法来编写逻辑。同时,还可以参考BeanShell的官方文档和示例来了解更多详细的语法规则和用法。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值