Jmeter的前置处理器可以用来在取样器执行前做一些数据准备操作,也需要注意使用的作用域问题。常用的前置处理器有:用户参数、BeanShell预处理器、JDBC预处理器。

一、用户参数

【用户参数】与前面介绍过的【用户定义的变量】有相似之处,先来介绍下用户参数的使用方法再去区分两者的异同。
1、注意作用域的问题:

(1)如果是放在测试计划下,则整个测试计划都可以引用该处定义的变量
(2)如果是放在线程组下,则只能在所放的线程组下引用
(3)如果是在请求下,则只能在具体请求下引用

2、用户参数有名称,用户_N的定义,下面进行实例讲解。
实例1:只定义一个用户,则在引用变量的时候,永远都是这个用户的值。如图:

执行结果:

实例2:定义多个用户,则在引用变量的时候,会进行顺序循环取对应用户的值。

注:每次迭代更新一次:如果有多个用户/使用变量时勾选,如果不勾选,所有线程用的是同一个值,需要不同的线程用不同的值,需要勾选此选项

如图:

执行结果:

3、【用户参数】与【用户自定义的变量】的区别:
(1)【用户参数】可以给每个参数赋多个值,而【用户自定义的变量】只能赋一个值。

此处引发了一个思考,如果【用户参数】与【用户定义的变量】的变量名称重复的时候,会引用哪个值呢?答案是会引用到【用户参数】的值。

原因:

1、线程组下的用户参数优先级高于测试计划里的用户自定义变量;

2、HTTP 请求下的用户参数优先级高于线程组下的用户参数;

3、HTTP请求下的用户参数和用户自定义变量重名,则优先取用户参数的值;因为配置元件执行完再到前置处理器,所以前置处理器的值会覆盖配置元件的值;

执行结果:

(2)【用户参数】会在每次取样器执行之前都运行一次,而【用户自定义的变量】只会运行一次,这里使用在两个元件中都使用time函数举例

执行结果:

可以观察到,用户参数time1的变量值每次执行请求前都会变化一次,而用户定义的变量time2的变量值都不会变。

二:Beanshell前置处理器
该元件功能十分强大,可以编写Java代码进行一些数据准备等操作。
1、先介绍下Jmeter里Beanshell的内置变量操作
(1)vars变量:用来操作Jmeter的变量值得,常用的方法有:
(1.1)vars.get("key"):从Jmeter变量中获取指定键的值
(1.2)vars.put("key","value"):向Jmeter变量设置变量键值对
例子:

附上代码:
String name=vars.get("name"); //此处获取Jmeter的变量值转换成Java的变量
log.info("获取到的变量值为:="+name);//打印一下获取的变量值

vars.put("phone","13211111111"); //向Jmeter变量中设置一个phone变量
log.info("设置phone的变量值为:="+vars.get("phone")); //打印一下设置的phone值
通过此变量可以对Jmeter变量进行设置或者获取操作。点击下右上角的三角形即可查看日志。
日志信息为:

(2)ctx变量:用来获取当前线程的上下文信息,常用方法:
(2.1)ctx.getVariables().get("key"):等价于vars.get("key"),从Jmeter变量中获取指定键的值
(2.2)ctx.getProperties().getProperty("key"):获取Jmeter的属性,这里可以获取Jmeter.properties配置文件下的属性。
(2.3)ctx.getThreadNum():获取当前线程组编号
例子:

附上代码:
log.info("=通过ctx形式获取一下Jmeter存储的变量:="+ctx.getVariables().get("name"));
log.info("=通过ctx形式获取一下Jmeter属性:="+ctx.getProperties().getProperty("sampleresult.default.encoding")); //此处验证下获取我们先前配置的编码属性
log.info("=====通过ctx形式获取一下当前线程编号:="+ctx.getThreadNum());

日志展示:

(3)log变量:用来记录日志,会写进jmeter.log文件中,常用方法:
(3.1)log.info():打印普通日志
(3.2)log.warn():打印警告日志
(3.3)log.error():打印错误日志
例子:

(4)props变量:用来操作jmeter的属性的,常用方法有:
(4.1)props.get("propName"):获取Jmeter的指定属性信息
(4.2)props.put("propName","propValue"):给Jmeter设置属性
(4.3)props.containsKey("key"):判断Jmeter是否存在指定key的属性
(4.4)props.contains("values"):判断Jmeter是否存在指定value的属性
例子:

附上代码:
log.info("通过props变量获取下Jmeter的编码属性:"+props.get("sampleresult.default.encoding"));
log.info("通过props变量判断下Jmeter的编码属性是否存在:"+props.containsKey("sampleresult.default.encoding"));

2、再来介绍下Beanshell的自带数组传参的使用
先看图:

Beanshell是支持将变量值传入到这里的数组的,多个值用“空格”隔开,下面举个例子:

3、还有更高级的功能,比如:通过导入外部Jar包,调用外部Jar包的方法,完成自定义的功能,后续介绍到高级部分再进行补充

4、下面进行实际使用
(1)、在取样器执行前,准备一些必要的参数,如时间参数

通过这个前置处理器提供了这个time变量参数,就可以在取样器中使用该变量了

执行结果:

三:JDBC预处理器
用于在执行JDBC请求前,进行一些数据准备等操作,比如脚本在执行前,需要在数据库新建一些记录等数据。
例子:通过JDBC预处理器向数据库中插入一些数据。

(1)执行JDBC预处理器前的表数据:

(2)编写JDBC预处理器

(3)执行后,查看数据库,数据新增成功了

(4)对上述例子可以改进下,有时候我们造数据的时候,可能是需要随机生成一些测试数据的,那么我们就可以通过随机变量传进去。

Jmeter的元件使用介绍:前置处理器详解相关推荐

  1. jmeter 导入java,JMeter导入自定义的Jar包的详解教程

    1.简介 原计划这一篇是介绍前置处理器的基础知识的,结果由于许多小伙伴或者童鞋们在微信和博客园的短消息中留言问如何引入自己定义的Jar包呢???我一一回复告诉他们和引入插件的Jar包一样的道理,一通百 ...

  2. 异常处理器详解 Java多线程异常处理机制 多线程中篇(四)

    在Thread中有异常处理器相关的方法 在ThreadGroup中也有相关的异常处理方法 示例 未检查异常 对于未检查异常,将会直接宕掉,主线程则继续运行,程序会继续运行 在主线程中能不能捕获呢? 我 ...

  3. DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之DilatedConvolutions:Dilated Convolutions(膨胀卷积/扩张卷积)算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 Dilated Con ...

  4. DL之ShuffleNetV2:ShuffleNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之ShuffleNetV2:ShuffleNetV2算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 ShuffleNetV2算法的简介(论文介绍) 1.论文特点 2.基于硬件 ...

  5. DL之ShuffleNet:ShuffleNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之ShuffleNet:ShuffleNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 相关文章 DL之ShuffleNet:ShuffleNet算法的简介(论文介绍).架构详 ...

  6. DL之MobileNetV2:MobileNetV2算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之MobileNet V2:MobileNet V2算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 MobileNetV2算法的简介(论文介绍) MobileNet V2算法 ...

  7. DL之MobileNet:MobileNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之MobileNet:MobileNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 MobileNet算法的简介(论文介绍) 1.研究背景 2.传统的模型轻量化常用的方法 ...

  8. DL之SqueezeNet:SqueezeNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之SqueezeNet:SqueezeNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 SqueezeNet算法的简介(论文介绍) 1.轻量级的CNN架构优势 2.主要特 ...

  9. DL之DenseNet:DenseNet算法的简介(论文介绍)、架构详解、案例应用等配图集合之详细攻略

    DL之DenseNet:DenseNet算法的简介(论文介绍).架构详解.案例应用等配图集合之详细攻略 目录 DenseNet算法的简介(论文介绍) DenseNet算法的架构详解 3.DenseNe ...

最新文章

  1. 转载 SharedPreference.Editor的apply和commit方法异同
  2. arm-linux-gcc 头文件搜索路径,gcc和arm-linux-gcc默认头文件库搜索路径
  3. axios 获取上传进度_PHP获取HTTP body内容的方法总结
  4. mysql与mysqli
  5. 顶部固定不动 下部分滚动_彻底解决背景跟随弹窗滚动问题
  6. matlab simulink笔记06 —— 利用simulink求解微分方程/simulink框图与控制系统框图的区别
  7. 渗透测试中利用社会工程学的巧妙之处
  8. Zedboard 运行linaro操作系统
  9. win7无法自动获取dns服务器地址,Win7无法自动获取DNS与IP地址怎么办
  10. iptables --algo 字符串匹配算法 bm kmp
  11. [论文翻译]V-Net:Fully Convolutional Neural Networks for Volumetric Medical Image Segmentation
  12. Flume安装部署,采集方案配置文件编写案例,启动agent采集数据
  13. Supervised Contrastive Learning For Recommendation
  14. 基于Matlab软件的视觉导航系统的仿真
  15. @Validated和@Valid 解决list校验问题
  16. 慎重跳槽,我眼中的跳槽黄金时期
  17. Vue-Router前端路由的两种模式、区别、原理?
  18. PyQt5制作一个爬虫小工具,获取某网上市公司的财务数据可视化
  19. 网络编程——线程竞争
  20. 控制工程基础 董景新_编委读报丨“十大最美公交司机”都是谁;新疆交通消费扶贫花样多;海南邮轮港口海上游航线试点迎来新突破……...

热门文章

  1. ios点击推送闪退_iOS 13.4 Beta 4 发布,闪退问题修复!
  2. 创建工程文件(完整流程)
  3. nuc7 android tv,NUC7PJYH HDMI在特定显示屏上出现问题
  4. 被svn版本控制的文件上显示红色叉号
  5. 利用ADB固定Android手机的CPU频率
  6. mysql按月份分组查询_mysql如何按月份分组查询
  7. 项目管理考PMP真的有用吗?
  8. 计算机平均值的快捷键,excel求平均值快捷键
  9. 易语言php统计代码,易语言统计代码行数与API的工具
  10. PDF太大如何压缩变小?