JMeter36个内置函数及11个新增函数介绍

JMeter内置了36个函数,这些函数可以通过函数助手进行编辑和测试。了解这些函数,不仅能提高JMeter的使用熟练度,也有助于知晓测试工具或测试框架通用的函数有哪些,在自主设计时,作为参考借鉴。

JMeter函数调用的写法是${__function()},注意函数名前面需要添加双下划线前缀

__BeanShell脚本语言

执行BeanShell脚本。BeanShell是Java编写的Java源码解释器,小型、免费、可嵌入,可以像写脚本语言一样写Java,无需编译,立即运行

示例,字符串拼接:

image-20210529095244217

输入表达式后,点击Generate & Copy to clipboard按钮,会生成函数语法并复制到粘贴板,同时输出函数运行结果。

__char

把数字转化成Unicode字符。

示例,数字65转化成字符A:

image-20210531142353946

__counter

统计线程的迭代次数。它有两个参数:

  • 第一个参数,如果为true,那么每个线程单独统计;如果为false,那么所有线程合在一起统计。
  • 第二个参数,变量名。

示例:

image-20210531142653887

__CSVRead

从CSV文件中读取数据。

固定取值

始终取第n列第一行的值。

示例:

image-20210531144416950

动态取值

使用next每次迭代取下一行数据。注意必须先取列,再取行。

示例:

image-20210531144832367

文件别名

给文件名起个别名。

示例:

image-20210531145335502

__escapeHtml

HTML转义。

示例:

image-20210531145738207

__escapeOroRegrexChars

把一些Java正则表达式引擎不识别的正则表达式转换一下,这样就可以识别了。转换过程中使用了ORO正则表达式库。

示例:

image-20210531150336942

__eval

计算表达式。

示例:

image-20210531152230689

__evalVar

把表达式的结果存入变量。

示例:

image-20210531152831042

image-20210531152841364

__FileToString

读取文件全部内容,以字符串形式保存到变量中。

示例:

image-20210531153542939

__intSum

int型求和。

示例:

image-20210531154020310

__longSum

跟上个一样,只是换成了long型。

__javaScript

执行JavaScript脚本。

示例:

image-20210531154838870

__jexl

JEXL全称是Jakarta Commons Jexl,它是一种表达式语言解释器。jexl能直接访问JMeter中的部分变量:

  • log:直接调用logger函数
  • ctx:获取JMeterContent对象
  • vars:获取JMeter定义的变量
  • props:获取JMeter配置属性
  • threadName:获取JMeter线程名
  • sampler:获取Sampler实例
  • sampleResult:获取SamplerResult实例
  • OUT:OUT.println(),类似System.out.println

示例:

image-20210531155821116

__log

记录日志,并返回输入的字符串。

日志级别包括:

控制台指JMeter GUI的感叹号打开的控制台;标准输出窗口指打开JMeter时的CMD窗口。

  • OUT:打印到控制台和标准输出窗口,相当于System.out.print()
  • ERR:打印到控制台和标准输出窗口,相当于System.err
  • DEBUG:打印到控制台,DEBUG级别以上
  • INFO:打印到控制台,INFO及ERROR级别
  • WARN:打印到控制台,WARN、INFO、ERROR级别
  • ERROR:打印到控制台,仅ERROR级别

后四种级别DEBUG、INFO、WARN、ERROR是否写入JMeter的运行时日志,需要通过jmeter.property文件进行配置。

示例:

image-20210531162511075

__logn

与上一个类似,区别是它只记录日志,不返回值。

__machineIP

本机的IP。

__machineName

本机的计算机名。

__P

获取命令行中定义的属性,默认值为1。

示例:

image-20210531164008854

在非GUI方式运行测试计划时,可以用这个函数来做参数化,由运行命令动态指定参数值,方便跟Jenkins、Maven或者Ant集成。

__property

获取jmeter.properties文件中设置的JMeter属性。

示例:

image-20210531164712287

__Random

随机值。

示例:

image-20210531164848189

__RandomString

随机字符串。

示例:

image-20210531164946221

__regexFunction

跟后置处理器的正则表达式提取器用法一样。

示例:

image-20210531170414328

image-20210531170451003

__samplerName

获取当前sampler名称。

__setProperty

动态设置JMeter属性。

示例:

image-20210531170731146

__split

拆分字符串。

image-20210531171136879

__StringFromFile

不如使用CSV Data Set Config。

__TestPlanName

获取测试计划的名字。

__threadNum

返回当前线程号,从1开始递增。

示例:

image-20210531172632373

__time

返回当前时间,由SimpleDateFormat类来处理函数格式。

  • 年:yyyy
  • 月:MM
  • 日:dd
  • 时:hh
  • 分:mm
  • 秒:ss

示例:

image-20210531172851631

__unescape

返转escape字符,如\r\n转成CRLF。

__unescapeHtml

反转HTML,如  转成空格。

__urldecode

反转URL中的Unicode编码字符,如word%22school%22转成word"school"

__urlencode

转成Unicode编码字符,如word"school"转成word%22school%22

__UUID

生成唯一字符串。

__V

执行变量表达式并返回结果,如果需要嵌套的使用变量时,就可以用到它。

比如定义变量a1=2, b1=1${a1}``${b1}都可以调用成功。

但是如果想通过${a${b1}}来调用${a1}就不能成功。

使用${__V(a${b1})}等价于${__V(a1)}等价于${a1}就可以了。

__XPath

匹配XML文件内容。

示例:

<?xml version="1.0" encoding="utf-8"?>
<company>
	<name>
    	<address>
            shanghai
        </address>
    </name>
</company>

XPath表达式/company/name/address/text()取值shanghai。

XPath可以参考https://www.w3school.com.cn/xpath/index.asp

最近新增

除了上述36个内置函数,JMeter最近还新增了以下函数:

changeCase

改变大小写

dateTimeConvert

日期格式转换

digest

加密算法,如SHA-1, SHA-256, MD5等

escapeXml

转义XML

groovy

groovy表达式

isPropDefined

属性是否定义

isVarDefined

变量是否定义

RandomDate

随机日期

RandomFromMultipleVars

从多个变量中取随机值

StringToFile

把字符串写入文件中

timeShift

时间偏移,比如计算某一天的前三天

小结

本文对36个内置函数,以及11个新增函数进行了介绍,灵活选择使用这些函数,能起到事半功倍的效果。函数助手可以很方便的对函数进行预览和测试。最新最全的函数及其使用介绍可以到官网查阅:https://jmeter.apache.org/usermanual/functions.html

参考资料:

《全栈性能测试修炼宝典JMeter实战》

  • 1
    点赞
  • 25
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
课程从基础讲起,全课程以实战为主,每个知识点通过实际案例演练讲解理论+实践结合,更容易理解,适合小白,低门槛,快速上手。 课程同时涵盖web端和移动端app测试,同时还加入了抓包工具的使用; 1) 第一阶段为JMETER 5.4.1 (最新版本)工具使用篇,通过Jmeter 介绍和安装、http 取样器、JDBC 取样器、JMETER 组件详细讲解、配置元件、三种参数化方式教你玩转JMETER 参数化、工作过程中间所需的常用函数、聚合报告、察看结果树、汇总报告等监听器知识,后置处理器、后置处理器之正则表达式提取器提取响应内容实践、读取本地JSON格式文件实例、正则表达式操作符、正则表达式工具之Regextester,系统全面学习正则表达式,突破JMETER 知识难点,响应断言、JMETER分布式、分布式原理、搭建JMETER 分布式、WebService协议接口测试。 每一个知识点采用理论加案例的方式,吃透每一个知识点,为性能测试实践奠定基础。 2) 第二阶段为性能测试实践篇1、通过JMETER 实践爬虫技术,爬取第三方平台全网页地址、批量爬取国外网站壁纸10W+图片并保存到本地;2、详细介绍Fiddler 抓包工具,Fiddler 抓包工具原理、Fiddler 抓取PC 端和移动端包信息、JMETER+Fiddler 结合使用对PC 端项目进行性能测试项目实践,提升PC 端性能测试能力;3、JMETER+Fiddler  结合使用对app 项目进行性能测试项目实践,提升app项目性能测试能力4、性能测试常见的业务指标和技术指标、响应时间、TPS、HPS等知识进行讲解5、通过JMETER 对移动端项目进行性能测试实战; 

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值