JMeter教程
JMeter教程
官方文档:https://jmeter.apache.org/usermanual/index.html
- JMeter教程
- 安装&下载
- 准备工作
- 1、下载
- 2、环境配置
- 3、启动JMeter
- 基础设置
- 修改默认语言
- 1、一次性修改
- 2、永久修改
- 解决响应乱码
- 修改默认语言
- 导航
- JMeter常用文件目录
- 元件
- 八大元件解析
- 元件的作用域和执行顺序
- 同一作用域下,不同类型元件的执行顺序
- 同一作用域下,相同类型元件的执行顺序
- 作用域
- 简单的HTTP请求
- 1、测试计划
- 2、创建线程组
- 3、设置HTTP Headers
- 4、发送Get请求
- 5、发送POST请求
- application/x-www-form-urlencoded
- application/json
- multipart/form-data(上传文件)
- JMeter参数化
- 用户定义的变量
- 用户参数
- 小栗子
- CSV数据文件设置
- 小栗子
- JMeter函数助手
- 断言
- 响应断言
- 小栗子
- JSON断言
- 小栗子
- 响应断言
- JMeter接口关联
- 正则表达式提取器
- 小栗子
- JSON提取器
- 小栗子
- XPATH提取器
- JMeter属性
- 正则表达式提取器
- 链接Mysql
- 逻辑控制器
- IF 控制器
- 循环控制器
-
- 小栗子
-
- 事务控制器
- JMeter分布式
- ♥偷懒小技巧
- 设置默认请求信息
- 保存下载的文件
- 自动设置cookie
- 常用数据
- MIME
- 常用函数
- 参考网站
- 安装&下载
安装&下载
准备工作
按住JMeter之前,需要先配置JDK
1、下载
下载地址:https://jmeter.apache.org/download_jmeter.cgi
Windows 系统下载:ZIP
Linux系统下载:tgz
2、下载后无需安装,解压后即可使用。
2、环境配置
- 新增JMETER_HOME环境变量,变量值为JMeter解压的路径
- 编辑PATH变量,加上%JMETER_HOME%\lib\ext\ApacheJMeter_core.jar;%JMETER_HOME%\lib\jorphan.jar;%JMETER_HOME%\lib\logkit-2.0.jar;
3、启动JMeter
完成以上操作后,双击打开下图所示路径中的jmeter.bat,就可以打开Jmeter了。
打开的时候会有两个窗口:1、Jmeter命令窗口2、Jmeter UI操作界面。 不要关闭命令窗口
基础设置
修改配置后,都需要重启JMeter才能生效~
修改默认语言
1、一次性修改
每次重启JMeter后都是重置。
2、永久修改
修改JMeter的配置文件jmeter.properties的language字段值,则可启动后显示为设置其它语言(永久性)
解决响应乱码
导航
JMeter常用文件目录
Bin目录:存放可执行文件&配置文件
printable_docs目录:用户帮助手册
lib目录:存放JMeter依赖的jar包&三方插件Jar包
元件
八大元件解析
多个类似功能组件的容器(类似于类的封装,把相同功能的def放到同一个class下)
- 测试计划 :JMeter进行测试的起点,它是其他JMeter测试元件的容器
- 线程组 :代表一定数量的模拟用户,它可以用来模拟用户并发送请求。
- 取样器 :发送请求
- 逻辑控制器:控制语句的执行顺序(与python中的if 一样,判断条件执行代码)
- 前置处理器:对请求参数进行预处理
- 后置处理器:对响应参数进行提取
- 断言:检测接口的响应结果与预期结果一致
- 定时器:用于操作之间设置等待时间,等待时间是性能测试中常用的控制客户端QPS的手段。
- 测试片段:封装一段代码,供其他脚本调用
- 配置元件:用来提供对静态数据配置的支持。例CSV Data Set config可以将本地数据文件形成数据池(Date Pool)
- 监听器:查看JMeter脚本的运行结果
- 线程组 :代表一定数量的模拟用户,它可以用来模拟用户并发送请求。
元件的作用域和执行顺序
同一作用域下,不同类型元件的执行顺序
1、配置元件:数据参数化
2、前置处理器:前置操作
3、定时器:~
4、取样器:~
5、后置处理器:提取参数
6、断言:断言测试结果
7、监听器:查看聚合报告&查看结果树
同一作用域下,相同类型元件的执行顺序
按照在测试计划中从上往下的顺序依次执行
作用域
元件的作用域是靠测试计划的树形结构中的元件的父子关系来确定的,作用域原则是:
1、取样器元件不和其他元件相互作用,因此不纯在作用域的问题
2、逻辑控制器元件,只对其子节点中的取样器起作用
3、除取样器和逻辑控制器元件外,其他6类元件,如果是其 取样器的子节点,则该元件对其父节点其作用
4、除取样器和逻辑控制器元件外的其他6类元件,如果其父节点不是取样器,则其作用域是该元件父节点下的其他所以后代节点(包括子节点,孙子节点,等等)
简单的HTTP请求
步骤:
1、测试计划
选中独立运行每个线程组,即线程组按顺序执行(默认情况下,所以线程组是一块执行的,并没有执行顺序,当勾选后,线程组会依次从上往下执行)
2、创建线程组
测试计划 -> 添加 -> 线程 -> 线程组
PS:“循环次数”勾选“永远”,调度器才会生效
3、设置HTTP Headers
4、发送Get请求
-
名称:随意
-
协议:http/https
-
服务器名称或IP:请求的URL
-
端口号:http 80;https 443
-
HTTP请求:接口的请求方法get post delect put.....
-
路径:请求的path
-
内容编码:发送请求时的编码格式,utf-8
-
参数:
-
名称:key
-
值:value
-
编码:当value包含中文时,填写utf-8
-
自动重定向:如果选中该选项,当发送HTTP请求后得到的响应是302/301时,JMeter 自动重定向到新的页面。
-
Use keep Alive : 当该选项被选中时,jmeter 和目标服务器之间使用 Keep-Alive方式进行HTTP通信,默认选中。
-
Use multipart/from-data for HTTP POST :当发送HTTP POST 请求时,使用Use multipart/from-data方法发送,默认不选中。
-
消息体参数:POST请求中的boby参数
5、发送POST请求
HTTP请求中,常见的请求数据格式包括:
- application/x-www-form-urlencoded:这是最常见的格式,它以key-value的形式将请求参数放在HTTP请求的正文中,并使用
&
符号进行分隔。这种格式适合于提交简单的表单数据。 - multipart/form-data:这种格式常用于上传文件,请求正文包含多个部分,每个部分都有自己的Content-Type和Content-Disposition等信息。
- application/json:使用JSON格式传递数据,适合传递复杂的结构化数据,如JavaScript对象。
- text/xml:使用XML格式传递数据,适合传递结构化数据,如SOAP(简单对象访问协议)。
- text/plain:纯文本格式,适合于发送简单的文本数据。
application/x-www-form-urlencoded
-
如果不设置content-type,默认就是此格式
-
该格式,有两种传参方式:
- 1、参数;
- 2、消息体数据(boby data)
- 在boby data中,数据格式:key1=value1&key2=value2
- 1、参数;
application/json
-
步骤1: 设置conten-type为 multipart/form-data
-
该格式,只能在boby data 传递参数:
-
{
"key1":"value1",
"key2":"value2"
}
-
multipart/form-data(上传文件)
- 勾选“对POST使用multipart/form-data”后,不用在设置content-type
- 注意事项:
- 1、上传文件中的第一列,需要输入文件路径(容易按照习惯填写key)
- 2、当上传文件失败时,可以尝试修改“高级”选项中的“客户端实现”方式(只是一种尝试方法,不保证一定发送成功),图二所示:
JMeter参数化
背景:在实际的测试工作中,我们经常需要对多组不同的输入数据,进行同样的测试操作步骤,以验证我们的软件的功能。这种测试方式在业界称为数据驱动测试, 而在实际测试工作中,测试工具中实现不同数据输入的过程称为参数化设置。
jmeter提供多种参数化设置的方式,常用的有:
- 1、使用 用户定义的变量元件 实现
- 2、使用 用户参数元件 实现
- 3、使用 函数助手 实现
- 4、使用 CSV 数据文件设置元件 实现
- 5、其它方式(数据库数据、beanshell等)实现
优先级:
- 线程组下的用户参数组件 优先级高于 测试计划 里的用户自定义变量。
- HTTP 请求下的用户参数组件 优先级高于 线程组下 的用户参数组件。
- 若有重名参数,优先取优先级高的用户参数。
- 若用户参数和用户自定义变量重名,则优先取用户参数组件中的值 。
因为配置元件执行完再到前置处理器,所以前置处理器的值会覆盖配置元件中设置的值。
用户定义的变量
背景:在实际使用jmeter进行接口测试过程中,我们把一些常用的配置值全部放置到用户定义的变量元件中,方便统一管理。在需要使用到的其他地方通过 ${变量名} 的语法格式进行引用即可
路径:
-
1、 创建路径:线程组 - > 添加 - > 配置元件 - > 用户定义的变量。格式: 变量名 - 变量值
-
2、引用定义的变量名,格式:$
用户参数
背景:不同的线程(用户)使用不同的数据;
与用户自定义变量不同的是,用户参数列表中的参数取值可以在测试计划执行过程中发生变化。建议在参数的取值范围很小,使用用户参数比较合适
路径:线程组 - > 添加 - > 前置处理器 - > 用户参数
注意事项:
-
1、当线程数大于1时,用户参数才是循环赋值。
-
2、当线程数 > value数时,会循环读值
小栗子
1、不勾选:每次迭代更新一次
2、勾选:每次迭代更新一次
实测勾选与否,测试的结果都是一样的。有知道得大佬,可以留言~
CSV数据文件设置
背景:csv数据文件中的csv称为逗号分隔值或者字符分割值,其文件以纯文本的形式存储表格数据;导入的文件可以为excel后缀名为xls、csv或者txt文本
路径:线程组 -> 添加 -> 配置元件 -> CSV Data Set Config
小栗子
JMeter函数助手
背景: JMeter封装了一些常用的函数方法
路径:
断言
响应断言
背景:对响应的结果自动断言校验
路径:
小栗子
1、响应文本
响应体
2、响应代码
断言响应状态码
3、响应信息
响应消息。对于HTTP协议来说,是原因短语,比如OK、Not Modified、Not Found等。
4、响应头
判断响应headers中的信息是否有指定的信息
5、请求头
request Header信息
6、URL样本
请求的URL。对于HTTP请求,若勾选了“Follow Redirects”,则包含重定向后的URL。
7、文档
8、请求数据
HTTP请求,发送时携带的请求参数(请求体)
JSON断言
json断言元件与响应断言元件的功能类似,它只针对响应正文为json数据格式的内容进行断言功能。
操纵步骤:
- 1、填写Assert Json Path exists # 表达式,获取实际结果
- 2、勾选Additionally assert value # 勾选:断言实际结果的内容;不勾选:只断言有没有实际结果,不关注值
- 3、填写Expected Value # 预期结果
路径:
描述
小栗子
还有许多断言方式,自行解锁~~
JMeter接口关联
如果有这样的情况:一个完整的操作流程,需要先完成某个操作,获得某个值或数据信息,然后才能进行下一步的操作,也就是常说的接口关联,将上一个请求的响应结果作为下一个请求的参数。
正则表达式提取器
作用:任何格式的响应数据,都可以使用正则表达式提取器进行提取
路径:“取样器”右键—>添加—>后置处理器—>正则表达式提取器。
简单描述:
参数介绍:
- 名称:正则表达式提取器组件的自定义名称,见名知意最好。
- 注释:即添加一些备注信息,对该正则表达式提取器组件的简短说明,以便后期回顾时查看。
(1)Apply to:作用范围(返回内容的取值范围)
- Main sample and sub-samples:作用于父节点的取样器及对应子节点的取样器。
- Main sample only:仅作用于父节点的取样器。
- Sub-samples only:仅作用于子节点的取样器。
- JMeter Variable Name to use:作用于JMeter变量(输入框内可输入JMeter的变量名称),从指定变量中提取需要的值。
(2)Field to check:要检查的响应字段
- 主体:响应报文的主体,最常用。
- Body(unescaped):是替换了所有的HTML转义符的响应主体内容,注意HTML转义符处理时不考虑上下文,因此可能有不正确的转换,不太建议使用。(即:替换了转义码的Body部分)
- Body as a Document:从不同类型的文件中提取文本,注意这个选项比较影响性能。
- Response Headers:从响应头信息中提取数据,如果你使用中文语言的JMeter,会看到这一项是信息头,这是中文翻译问题,应以英文为准。
- Request Headers:从请求头信息中提取数据。
- URL:从请求URL中提取数据。
- 响应码(Response Code):提取响应状态码,比如:200、404等。
- 响应信息(Response Message):响应信息中提取数据。
(3)第三部分内容
- 引用名称(Name of created variable):定义提取值的引用变量名称。
- 正则表达式(Regular Expression):用于提取值的正则表达式。
- 模板(Template ($i$ where iis capturing group number, starts at 1)):正则表达式的提取模式。如果正则表达式有多个提取结果,则结果是数组形式,模板为$1$,$2$,表示把解析到的第几个值赋给变量,从1开始匹配,以此类推。若只有一个结果,则只能是$1$。
- 匹配数字(0代表随机):正则表达式匹配数据的结果可以看做一个数组,表示如何取值:0代表随机取值,正数n则表示取第n个值,比如1代表第一个,2代表第二个,以此类推。负数则表示提取所有符合条件的值,如-1。
- PS:当数字为-1时,代表匹配全部。正则表达式返回的是一个list,后期取值时需要指定索引,如:${name_索引值}
- 缺省值(Default Value):匹配失败时候的默认值;通常用于后续的逻辑判断,一般通常为特定含义的英文大写组合,比如:ERROR等。
- Use empty defau't value:使用空值为默认值。
引用变量
小栗子
需求:登录账号,添加商品到购物车
步骤:
- 在登录likeshop的“HTTP提取器”中,创建“正则表达式提取器” 。获取token值。
- 在添加购物车的HTTP提取器中,使用${token_1}获取步骤1中的token值。
JSON提取器
作用:针对JSON格式的响应结果进行提取
路径:“取样器” -> 添加 -> 后置处理器 -> JSON提取器
参数介绍: 与正则匹配提取器一样。
小栗子
XPATH提取器
作用:针对HTML格式的响应数据进行提取
路径:“取样器” -> 添加 -> 后置处理器 -> Xpath提取器
参数介绍:
JMeter属性
作用:不同线程组之间的共享变量(跨线程组)。
步骤:
-
1、添加线程组1
-
2、添加HTTP请求
-
3、添加JSON提取器/正则匹配提取器/XPATH提取器
-
4、添加BeanShell提取器
-
使用${setProperty(要设置的属性名称,变量,)}(例:${__setProperty(token,${token_1},)}),设置JMeter属性(也就是跨线程组的变量)
-
-
5、添加线程组1
-
6、添加HTTP请求
- 使用${__property(属性名称,,)}(例:${__property(token,,)}),读取JMeter属性
-
7、查看结果树
链接Mysql
作用:
- 1、结果断言
- 例如:添加购物车下单,检查接口返回的订单号,是否与数据库中生成的订单号一致。
- 2、准备测试数据
- 例如:通过数据库来准备大量的性能测试数据
- 3、用作请求的参数化
- 登录时需要的用户名,可以从数据库中查询获取
- 4、数据清理
- 添加商品后,需要删除该商品数据
前置配置:添加Mysql驱动Jar包
- 下载地址:https://repo1.maven.org/maven2/mysql/mysql-connector-java/
- 安装路径:记得重启JMeter
操作步骤:
- 1、创建测试计划。
- 2、创建线程组:选中“测试计划”右键 —> 添加 —> 线程(用户) —> 线程组。
- 3、在线程组中,添加配置元件JDBC Connection Configuration(JDBC连接配置)组件:选中“线程组”右键 —> 添加 —> 配置元件 —> JDBC Connection Configuration。
- JDBC Connection Configuration组件,相当于一个数据库链接配置。
- 4、在线程组中,添加取样器JDBC Request(JDBC请求)组件:选中“线程组”右键 —> 添加 —> 取样器 —> JDBC Request。
- 相当于发送sql命令,并reture结果,保存到自定义变量中
- 数据库变量的读取:$
逻辑控制器
IF 控制器
作用:主要是用来控制它下面的测试元素是否执行。如果判断为真(True)那就执行,否(false)就不执行。与python中的if 作用一致
路径:选中“线程组”右键 —> 添加 —> 逻辑控制器 —> 如果(If)控制器
参数介绍:
表达式说明:
1、jexl3 or groovy 表达式
${__jexl3(条件表达式)} # jexl3 表达式
${__groovy(条件表达式} # groovy 表达式
表达式逻辑说明:
1、==
含义:是否等于
示例:如${__jexl3(${VAR}==1,)},判断${VAR}变量是否等于1。
2、!=
含义:不等于
含义:如${__jexl3(${VAR}!=1,)},判断${VAR}变量是否不等于1。
3、!
含义:非
示例:如${__jexl3(!(${VAR}!=2),)},对${VAR}的值不等于2,其判断为真,那么执行IF下的子项。
4、&&
含义:并且
示例:如${__jexl3(${VAR}1 && "${name}" != "李四",)},也就是${VAR}1和表达式 "${name}" != "张四"均为真时,执行IF控制器下的子项。
5、||
含义:或
示例:如${__jexl3(${VAR}1 && "${name}" != "李四",)},也就是${VAR}1和表达式 "${name}" != "张四"其中一项为真时,执行IF控制器下的子项。
6、>=
含义:大于等于
示例:如${__jexl3(${count}>=15,)}。也就是${count}>=15,其判断为真,那么执行IF控制器下的子项。
PS:如果判断表达式是字符串,此时,必须要用引号,变量都认为时字符串的形式,如:${jexl3("${name}""成都",)},不能用${jexl3(${name}"成都",)}
2、函数助手调用
3、JavaScript
表达式
采用JavaScript
其实就是在如果(IF)逻辑控制器中,取消勾选Interpret Condition as Variable Expression?
选项,如图所示:
循环控制器
作用:for循环发送控制器下的HTTP请求。ps:线程组是控制线程组下的所有用例执行次数,而循环控制器是 控制控制器下用例的循环次数。
路径:
参数介绍:
小栗子
事务控制器
参考网站:https://www.cnblogs.com/xyztank/articles/16772029.html
...
JMeter分布式
pass
♥偷懒小技巧
设置默认请求信息
背景:在接口测试时,例如“域名”都是相同的。每次创建提取器时,都需要添加重复的数据,是不是浪费时间?
解决方案:JMeter提供了设置默认http请求数据的 “HTTP 请求默认值”。(在HTTP请求默认值内添加的信息,不需要在提取器中再次填写)具体如下
路径:
小栗子
保存下载的文件
通过页面下载文件时,创建文件其实是浏览器的行为,并不是HTTP本身提供的能力,而JMeter本身不也不会自动帮我们创建。
所以,如下图,请求下载接口后,得到是一串看不懂的数据流,这说明下载接口请求时没有问题的,若想要下载请求到的内容展示出来,就需要使用BeanShell执行脚本,来保存到本地。
自动设置cookie
HTTPCookie管理器
暂时没研究明白怎么玩,怎么尝试都不生效。不写了,自行百度吧!
常用数据
MIME
.doc application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.pdf application/pdf
.xls application/vnd.ms-excel application/x-excel
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.ppt application/vnd.ms-powerpoint
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.pps application/vnd.ms-powerpoint
.ppsx application/vnd.openxmlformats-officedocument.presentationml.slideshow
.rar application/octet-stream
.tar application/x-tar
.tgz application/x-compressed
.zip application/x-zip-compressed
.z application/x-compress
.bmp image/bmp
.gif image/gif
.png image/png
.tif image/tiff
.jpe image/jpeg
.jpeg image/jpeg
.jpg image/jpeg
.txt text/plain
.xml text/xml
.htm text/html
.html text/html
.css text/css
.js text/javascript
.swf application/x-shockwave-flash
.dll application/x-msdownload
.exe application/octet-stream
.msi application/octet-stream
.chm application/octet-stream
.cab application/octet-stream
.ocx application/octet-stream
.wav audio/wav
.wma audio/x-ms-wma
.wmv video/x-ms-wmv
.mp3 audio/mpeg
.mpeg audio/mpeg
.mpg audio/mpeg
.rm application/vnd.rn-realmedia
.mid audio/mid
.midi audio/mid
.rmi audio/mid
.mht message/rfc822
.mhtml message/rfc822
.rtf application/rtf
.3gp video/3gpp
.apk application/vnd.android.package-archive
.asf video/x-ms-asf
.avi video/x-msvideo
.bin application/octet-stream
.bmp image/bmp
.c text/plain
.class application/octet-stream
.conf text/plain
.cpp text/plain
.doc application/msword
.docx application/vnd.openxmlformats-officedocument.wordprocessingml.document
.xls application/vnd.ms-excel
.xlsx application/vnd.openxmlformats-officedocument.spreadsheetml.sheet
.exe application/octet-stream
.gif image/gif
.gtar application/x-gtar
.gz application/x-gzip
.h text/plain
.htm text/html
.html text/html
.jar application/java-archive
.java text/plain
.jpeg image/jpeg
.jpg image/jpeg
.js application/x-javascript
.log text/plain
.m3u audio/x-mpegurl
.m4a audio/mp4a-latm
.m4b audio/mp4a-latm
.m4p audio/mp4a-latm
.m4u video/vnd.mpegurl
.m4v video/x-m4v
.mov video/quicktime
.mp2 audio/x-mpeg
.mp3 audio/x-mpeg
.mp4 video/mp4
.mpc application/vnd.mpohun.certificate
.mpe video/mpeg
.mpeg video/mpeg
.mpg video/mpeg
.mpg4 video/mp4
.mpga audio/mpeg
.msg application/vnd.ms-outlook
.ogg audio/ogg
.pdf application/pdf
.png image/png
.pps application/vnd.ms-powerpoint
.ppt application/vnd.ms-powerpoint
.pptx application/vnd.openxmlformats-officedocument.presentationml.presentation
.prop text/plain
.rc text/plain
.rmvb audio/x-pn-realaudio
.rtf application/rtf
.sh text/plain
.tar application/x-tar
.tgz application/x-compressed
.txt text/plain
.wav audio/x-wav
.wma audio/x-ms-wma
.wmv audio/x-ms-wmv
.wps application/vnd.ms-works
.xml text/plain
.z application/x-compress
.zip application/x-zip-compressed
常用函数
JMeter中大概分为七个类型的函数:
(1)信息类
主要用于获取一些常用的基本信息或是日志输出控制。
1、__threadnum函数:只是简单地返回当前线程的编号。
2、__samplerName函数:获取当前请求的名称。
3、__machineIP函数:获取本机的IP地址。
4、__machineNmae函数:返回本机的主机名。
5、__time函数:可以通过多种格式返回当前时间。
6、__log函数:会记录一条日志,并返回函数的输入字符串。
7、__logn函数:会记录一条日志,并返回空字符串。
8、__TestPlanName函数:获取当前测试计划。
(2)输入类
主要用于从外部文件读取数据,进行参数化。即:用于读取文件。
1、__StringFromFile函数:可以被用来从文本文件中读取字符串,这对需要大量可变数据的测试很有用。
2、__FileToString函数:可以被用来读取整个文件。每次对该函数的调用,都会读取整个文件。
3、__CSVRead函数:会从CSV文件读取一个字符串(请注意与StringFromFile 的区别)。
4、__XPath函数:读取XML文件,并在文件中寻找与指定XPath相匹配的地方。每调用函数一次,就会返回下一个匹配项。到达文件末尾后,会从头开始。
(3)计算类
用于计数、求和等操作。
1、__counter函数:每次调用计数器函数都会产生一个新值,从1开始每次加1。
2、__intSum函数:可以被用来计算两个或者更多整数值的和。
3、__longSum函数:可以被用来计算两个或者更多长整型值的合。
4、__Random函数:会返回指定最大值和最小值之间的随机数。
5、__RandomFromMultipleVars函数:从一组数据中提取一个数据。
6、__RandomString函数:生成随机字符串。
7、__UUID函数:生成随机的唯一的UUID。
(4)脚本类
主要用于调用外部脚本或是解析执行脚本,例如:groovy、beanshell等 。
1、__groovy函数:执行groovy脚本。会执行传递给它的脚本,并返回结果。
2、__BeanShell函数:会执行传递给它的脚本,并返回结果。
3、__javaScript函数:可以用来执行JavaScript代码片段(非Java),并返回结果值。
4、__jexl2函数:可以用于执行JEXL2表达式,并返回执行结果。
5、__jexl3函数:可以用于执行JEXL3表达式,并返回执行结果。
(5)属性类
用于读取和设置JMeter的配置。
1、__property函数:会返回一个JMeter属性的值。如果函数找不到属性值,而又没有提供默认值,则它会返回属性的名称。
2、__P函数:是一个简化版的属性函数,目的是使用在命令行中定义的属性。不同于函数__property,本函数没有提供选项用于设置保存属性值的变量。
3、__setProperty函数:用于设置JMeter属性的值。函数的默认返回值是空字符串,因此该函数可以被用在任何地方,只要对函数本身调用是正确的。
(6)变量类
对变量进行操作,主要用于验证变量表达式引用是否正确。
1、__split函数:会通过分隔符来拆分传递给它的字符串,并返回原始的字符串。如果分隔符紧挨在一起,那么函数就会以变量值的形式返回"?"。
2、__V函数:可以用于执行变量名表达式,并返回执行结果。
3、__eval函数:可以用来执行一个字符串表达式,并返回执行结果。如此一来,用户就可以对字符串中的变量和函数引用做出修改。
4、__evalVar函数:可以用来执行保存在变量中的表达式,并返回执行结果。
(7)字符串类
用于对字符串的处理操作。
1、__regexFunction函数:正则表达式函数可以使用正则表达式(用户提供的)来解析前面的服务器响应(或者是某个变量值),函数会返回一个有模板的字符串,其中携带有可变的值。还可以被用来保存值,以便供后续使用。
2、__escapeOroRegexpChars函数:将一些Java正则表达式引擎不识别的正则式进行转换,转换过程中使用了ORO正则表达式库,这个库也支持Perl5兼容的正则表达式语法。(Perl是一种高级、通用、直译式、动态的脚本语言,内部集成了正则表达式的功能)
3、__char函数:会将一串数字转换成Unicode字符。
4、__unescape函数:用于反转义Java-escaped字符串。
5、__unescapeHtml函数:用于反转义一个包含HTML实体的字符串,将其变为包含实际Unicode字符的字符串。
6、__escapeHtml函数:用于转义字符串中的字符(使用HTML实体)。即:使用html coding编码目标字符串。
7、__escapeXml函数:使用XML coding编码目标字符串。
8、__urldecode函数:urlcode解码。
9、__urlencode函数:编码为urlcode。
参考网站
https://www.cnblogs.com/YouJeffrey/category/2128447.html?page=1
https://www.cnblogs.com/xyztank/category/2197356.html?page=1