Jmeter取样器之JSR223取样器详解-7


JSR223取样器允许执行JSR223脚本代码用于创建/更新所需的某些变量。
由于JSR223脚本编译方式基本相同,后续将不再介绍如JSR223前置处理器、JSR223后置处理器、JSR223断言、JSR223定时器以及JSR223监听器

相比于BeanShell 取样器,JSR223取样器+groovy脚本具有可大大提高性能的功能(编译),同时支持更多的脚本语言,其中包括BeanShell脚本,所以在编写脚本时不建议使用BeanShell 取样器,也不再对BeanShell 取样器进行讲述,如果需要,使用JSR223取样器编写脚本是更好的选择。

由于本人只了解JAVA,所以以下脚本说明,均基于JSR223+groovy的java语法编写进行讲述,其他语言脚本我也不懂,请自行参阅。

在这里插入图片描述
属性描述
名称:显示的此取样器的描述性名称,可自定义
语言:要使用的JSR223脚本语言的类型
参数:要传递到脚本文件或脚本的参数列表
脚本文件:用于执行的脚本文件,若没有脚本文件,将执行脚本
脚本:传递给JSR223执行的脚本

如果提供了脚本文件,则执行脚本文件,否则执行脚本。

1、调用内置函数

在这里插入图片描述

获取返回数据并转换为String字符串

String Responsedata = prev.getResponseDataAsString();
if(Responsedata.contains("百度一下,你就知道")){
	//如果参数为true,则样本执行判断为成功,为false,则设置样本失败
	prev.setSuccessful(true);
	}else{
		prev.setSuccessful(false);
		}

获取返回数据并保存为字节数组对象,适用于保存返回数据至本地(如下载文件等操作)

import java.io.*;
byte[] bytes = prev.getResponseData();
String file_path = "F:/download/test.html";
File file = new File(file_path);
FileOutputStream out = new FileOutputStream(file);
out.write(bytes);
out.close(); 

prev.getResponseDataAsString()与prev.getResponseData()都是获取Response Body的内容,只是返回的数据类型不同,prev.getResponseDataAsString()返回String字符串,prev.getResponseData()返回byte[]字节数组,使用时可根据实际需要对返回数据进行处理。
在这里插入图片描述

获取请求头信息

String headers = prev.getRequestHeaders() ;

在这里插入图片描述

获取请求返回的code

String code = prev.getResponseCode() ;

获取响应信息

String responsesmessage = prev.getResponseMessage() ;

在这里插入图片描述

获取响应头信息

String responsesheader= prev.getResponseHeaders() ;

在这里插入图片描述

//获取请求URL

URL url = prev.getURL() ;
String url1 = prev.getUrlAsString();

在这里插入图片描述

设置响应信息Response message

prev.setResponseMessage("这是响应信息");

设置响应代码Response code

prev.setResponseCode("404");

注意:在beanshell脚本中可直接使用
ResponseMessage=“这是响应信息”;
ResponseCode=“404”;
IsSuccess=“false”;
但是在JSR223中不能用,而只能使用prev.set的方法
在这里插入图片描述

打印日志 ,日志会保存在bin目录下的jmeter.log文件中
默认支持级别为info及以上,debug级别日志由于太多,默认不支持

log.error("This is error message");

OUT功能等同于System.out,将在Jmeter工作台输出信息

OUT.println("此消息将被输出到Jmeter控制台");

在这里插入图片描述

设置属性与调用属性

${__setProperty(test1,property1,)};
props.put("test2","property2");
String test1 =props.get("test1");
String test2 = props.get("test2");

属性是所有线程公有的,需要注意的是,在JSR223或BeanShell中使用props.put(”name”,”value”)创建的属性,不能直接在当前JSR223或BeanShell中使用${__P(name,)}或${__property(name,)}进行调用,如果需要在当前JSR223或BeanShell中调用,需要使用props.get(“name”)方法。此处的name是属性名称,而不是随机的字符串。

定义变量与调用变量
此处的name是在用户定义的变量中定义的变量,已赋值为lucy

String test5 = vars.get("name");
//定义变量值,并获取
vars.put("name2","jack");
String test6 = vars.get("name2");

通过vars.put(“name”,”value”)方式定义的变量作用域限制为当前线程组,如果要跨线程调用,请使用属性定义,与props.put(”name”,”value”)同样的,vars.put(“name”,”value”)创建的变量,也不能直接在当前JSR223或BeanShell中使用${name}进行调用,而是使用vars.get(“name”)方法。

2、执行外部java文件

新建一个Java文件,添加如下代码

public class AddTest {
    public int add(int a ,int b){
        return a+b ;
    }
}

然后在JSR223中引入源文件并执行,执行方法与JAVA本身的方法一致
//引入源文件

source("F:/apache-jmeter-5.3/TestPlan/AddTest.java");
AddTest add = new AddTest();
int sum = add.add(15,20);
log.info("sum is : " + sum);

执行结果如下:
在这里插入图片描述

3、执行jar包

JSR223可调用外部jar包,也可以调用Jmeter提供的内部jar包,通常将我们写的代码打包成jar包后,有两种方法可以引入jar包,Jar包方法调用与JAVA语法一致。
1、将jar包放到Jmeter安装目录的\lib\ext目录下
2、在测试计划中导入
在这里插入图片描述

调用Jmeter内置MD5加密

import org.apache.commons.codec.digest.DigestUtils;
String password = DigestUtils.md5Hex("password");
vars.put("password",password.toUpperCase());

调用外部jar

AddTest add = new AddTest();
int sum = add.add(15,10);
log.info("sum is : " + sum);

在这里插入图片描述

  • 6
    点赞
  • 44
    收藏
    觉得还不错? 一键收藏
  • 3
    评论
JMeter中,JSR223取样器是一种非常有用的测试元件,它允许您使用JSR223脚本语言来执行自定义的测试逻辑。您可以通过使用Groovy、Javascript、Python等脚本语言来编写您的脚本。JSR223取样器可以在发送请求之前或之后执行脚本,以便对请求进行处理或进行后续操作。这些脚本可以用于执行各种操作,如修改请求参数、处理响应数据、生成动态数据等。 例如,如果您想在发送请求之前执行一些自定义逻辑,您可以在JSR223取样器中编写一个Python脚本来实现。您可以使用Python脚本来处理请求参数,例如从数据库中获取数据并将其添加到请求中。此外,您还可以在Python脚本中处理响应数据,例如解析JSON或XML响应,并提取所需的数据用于进一步的测试逻辑或断言。 通过使用JSR223取样器,您可以灵活地编写自定义脚本来满足特定的测试需求,并对请求和响应进行处理。此外,您还可以通过使用JSR223预处理程序、后置处理程序、断言、定时器和监听器来进一步扩展和优化您的测试脚本。这些JSR223控件允许您在不同的测试阶段执行脚本,以便对请求和响应进行处理、验证和监控。 总结起来,JSR223取样器JMeter中一种强大的测试元件,它允许您使用JSR223脚本语言来执行自定义的测试逻辑。您可以使用各种脚本语言,如Python,在JSR223取样器中编写脚本来处理请求和响应数据。此外,通过使用JSR223预处理程序等其他JSR223控件,您可以更加灵活地定制和优化您的测试脚本。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值