当前位置: 首页 > ops >正文

Jmeter自定义脚本

目录

log:输出类

Label:你自定义的组件的名称

FileName:添加的脚本文件的文件名

Parameters:你传入的参数,是一个字符串

args:你传入的参数,是一个数组

Parameters和args的异同:

OUT:输出类

props:封装的Java中的这个类java.util.Properties

sampler:用来获取取样器的内容(如:请求头、url、取样器内容……)

ctx:上下文信息

vars:用来处理与自定义变量有关的操作

如何查阅官方文档


注:本文以前置脚本为例

步骤:右击“HTTP取样器”-> 添加 -> 前置处理器 -> JSR223

也可以选择BeanShell:

但是推荐选择JSR223,因为官方推荐:

创建完成之后可以看到如下界面

JMeter也给我们提供了一些参数/类:

注:上面这个页面中的Filename该属性名有误,应该为FileName。

log:输出类

编写输出脚本

log.info("哈哈哈");

点击运行后脚本的输出结果需要在这里进行查看:

点击这个三角可以弹出控制台,里面会打印各种程序执行过程中的日志和脚本打印的东西

Label:你自定义的组件的名称

log.info("打印Label的值:"+Label)

FileName:添加的脚本文件的文件名

以下面这段代码为例

log.info("啦啦啦啦啦");
log.info(FileName);
log.info("kkkkk");

添加了脚本文件:

没有添加脚本文件:

注:一旦添加了脚本文件,那么在下方输入框中编写的脚本将不会被执行

Parameters:你传入的参数,是一个字符串

传参的位置在此处:

args:你传入的参数,是一个数组

传参的位置和Parameters相同。

如果需要传多个参数,参数与参数之间用英文空格分隔

Parameters和args的异同:

相同之处:

  • 都可以接收用户自定义传入的参数(会将用户传入的所有字符当成一个字符串)。

不同之处:

  • Parameters只能接收一个参数;
  • args可以接收一个或多个参数,多个参数之间需要使用空格分隔

OUT:输出类

这个类是封装了java输出方法的一部分。可以将内容打印至控制台,而非GUI界面。

Java的输出方法:System.out.println(); 而OUT类封装了这段代码的前半部分,即System.out

OUT.println("hahaha");

props:封装的Java中的这个类java.util.Properties

理论上Properties类的方法都可以用

sampler:用来获取取样器的内容(如:请求头、url、取样器内容……)

注:sampler是一个接口,不是类,不是类。有多种实现方式。

如何看应该使用那个实现类的方法呢?最简单的办法就是随便乱写一个方法,然后看报错信息是那个类:

根据报错信息可以知道HTTP采样器使用的是org.apache.jmeter.protocol.http.sampler.HTTPSamplerProxy这个实现类,所以此时可以去官方文档查看这个实现类的方法。(文末有官方文档查阅方法)

获取请求参数:

import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
log.info(sampler.getArguments().toString());

获取请求头信息并打印

log.info(sampler.sample().getRequestHeaders());

获取url并打印出来:

log.info(sampler.sample().getUrlAsString());

获取取样器内容:

log.info(sampler.sample().getSamplerData());

ctx:上下文信息

vars:用来处理与自定义变量有关的操作

在jmeter中自定义变量使用‘${}’来获取取值。

修改取样器的参数:

设置变量:

vars.put("val", "笔记本电脑");
//打印请求参数
import org.apache.jmeter.protocol.http.sampler.HTTPSamplerBase;
log.info(sampler.getArguments().toString());

获取自定义变量:

vars.put("val", "笔记本电脑");
String a = vars.get("val");
log.info(a);

如何查阅官方文档

步骤:右击脚本组件 -> 帮助

点击帮助后会在浏览器中自动跳转至对应组件的官方文档。

跳转至此页面后往下滑动页面,可以看到这个

中间是方法名和参数配置,右边为对应方法的介绍,最左侧为方法的返回值类型。

http://www.xdnf.cn/news/17778.html

相关文章:

  • 零基础学会制作 基于STM32单片机智能加湿系统/加湿监测/蓝牙系统/监测水量
  • 探索无人机图传技术:创新视野与无限可能
  • 在 macOS 上顺利安装 lapsolver
  • OpenCV Python——VSCode编写第一个OpenCV-Python程序 ,图像读取及翻转cv2.flip(上下、左右、上下左右一起翻转)
  • 死锁总结及解决方案
  • 关于截屏时实现游戏暂停以及本地和上线不同步问题
  • 用GPT解释“GPT-5”是什么,有什么优势
  • python-pycharm切换python各种版本的环境与安装python各种版本的环境(pypi轮子下载)
  • Flink Stream API 源码走读 - map 和 flatMap
  • KNN(k近邻算法)
  • Chrome插件开发实战:从架构到发布全流程
  • 准备用Qt6 重写音视频会议系统服务端
  • 开源 Arkts 鸿蒙应用 开发(十五)自定义绘图控件--仪表盘
  • 开源 Arkts 鸿蒙应用 开发(十六)自定义绘图控件--波形图
  • 【Javaweb学习|黑马笔记|Day1】初识,入门网页,HTML-CSS|常见的标签和样式|标题排版和样式、正文排版和样式
  • 前端css学习笔记6:盒子模型
  • 国内著名AI搜索优化专家孟庆涛发表《AI搜索内容可信度评估综合指南》
  • liteflow
  • Vue3中的ref与reactive全面解析:如何正确选择响应式声明方式
  • Java List 集合详解(ArrayList、LinkedList、Vector)
  • 水印消失术!JavaAI深度学习去水印技术深度剖析
  • 传输层协议TCP(3)
  • Flink Stream API 源码走读 - socketTextStream
  • 集成电路学习:什么是Machine Learning机器学习
  • 从单机到分布式:用飞算JavaAI构建可扩展的TCP多人聊天系统
  • 【力扣56】合并区间
  • easyexcel模板导出Map数据时空值列被下一行列非空数据覆盖
  • 从零开始的云计算生活——第四十三天,激流勇进,kubernetes模块之Pod资源对象
  • 使用Docker和Miniconda3搭建YOLOv13开发环境
  • 深入解析 Spring IOC 容器在 Web 环境中的启动机制