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

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

__BeanShell脚本语言

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

示例,字符串拼接:

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

__char

把数字转化成Unicode字符。

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

__counter

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

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

示例:

__CSVRead

从CSV文件中读取数据。

固定取值

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

示例:

动态取值

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

示例:

文件别名

给文件名起个别名。

示例:

__escapeHtml

HTML转义。

示例:

__escapeOroRegrexChars

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

示例:

__eval

计算表达式。

示例:

__evalVar

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

示例:

__FileToString

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

示例:

__intSum

int型求和。

示例:

__longSum

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

__javaScript

执行JavaScript脚本。

示例:

__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

示例:

__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文件进行配置。

示例:

__logn

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

__machineIP

本机的IP。

__machineName

本机的计算机名。

__P

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

示例:

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

__property

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

示例:

__Random

随机值。

示例:

__RandomString

随机字符串。

示例:

__regexFunction

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

示例:

__samplerName

获取当前sampler名称。

__setProperty

动态设置JMeter属性。

示例:

__split

拆分字符串。

__StringFromFile

不如使用CSV Data Set Config。

__TestPlanName

获取测试计划的名字。

__threadNum

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

示例:

__time

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

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

示例:

__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实战》

JMeter36个内置函数及11个新增函数介绍的更多相关文章

  1. php 内置的 html 格式化/美化tidy函数 -- 让你的HTML更美观

    php 内置的 html 格式化/美化tidy函数 https://github.com/htacg/tidy-html5 # HTML 格式化 function beautify_html($htm ...

  2. 数据库——mysql内置功能(11)

    1.视图 视图是一个虚拟表(非真实存在),其本质是(根据SQL语句获取动态的数据集,并未其命名),用户使用时只需使用(名称)即可获取结果集,可以将该结果集当做表来使用 使用视图我们可以把查询过程中的临 ...

  3. jsp详解(3个指令、6个动作、9个内置对象、11个隐式对象)

    jsp概述SP全称是Java Server Pages,它和servle技术一样,都是SUN公司定义的一种用于开发动态web资源的技术.JSP实际上就是Servlet.    jsp=html+jav ...

  4. Mysql 常用函数(11)- trim 函数

    Mysql常用函数的汇总,可看下面系列文章 https://www.cnblogs.com/poloyy/category/1765164.html trim 的作用 删除字符串左右两侧的空格 tri ...

  5. python内置函数,匿名函数

    一.匿名函数 匿名函数:为了解决那些功能很简单的需求而设计的一句话函数 def calc(n): return n**n print(calc(10)) #换成匿名函数 calc = lambda n ...

  6. python成长之路八 -- 内置函数

    1,python内置函数     内置函数     abs() dict() help() min() setattr() all()  dir()  hex() next()  slice()  a ...

  7. Python3中的内置函数

    内置函数 我们一起来看看python里的内置函数.什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为 ...

  8. 总结day13 ----内置函数

    内置函数 我们一起来看看python里的内置函数.什么是内置函数?就是Python给你提供的,拿来直接用的函数,比如print,input等等.截止到python版本3.6.2,现在python一共为 ...

  9. python学习笔记:第14天 内置函数补充和递归

    一.匿名函数 匿名函数主要是为了解决一些简单需求而设计的一种函数,匿名函数的语法为: lambda 形参: 返回值 先来看一个例子: # 计算n的n次方 In[2]: lst = lambda n: ...

随机推荐

  1. 【秒懂音视频开发】21_显示BMP图片

    文本的主要内容是:使用SDL显示一张BMP图片,算是为后面的<播放YUV>做准备. 为什么是显示BMP图片?而不是显示JPG或PNG图片? 因为SDL内置了加载BMP的API,使用起来会更 ...

  2. 硬件篇-02-TX2刷机Jetpack4.3

    Jetson TX2收货将近一周了,期间趁摄像头还没到,预先给TX2配置了环境.由于学校要求写毕设日志,故干脆一起在知乎写了,顺带帮助想要给TX2配环境却苦于网络上关于TX2的教程很少的同学. 本期内 ...

  3. 技术面试问题汇总第004篇:猎豹移动反病毒工程师part4

    这次所讨论的三个问题,比如DLL以及HOOK,很容易被病毒木马所利用,因此必须要比较全面地进行了解.而异常处理机制,则往往与漏洞相关联.它们自身的概念并不难理解,只是由之引申而来的问题,在计算机安全领 ...

  4. 华为USG6000V防火墙简单配置案例

    如图,PC1是企业内网用户,要通过防火墙NAT方式( 1.1.1.105-1.1.1.106 )访问Internet,Server是企业的FTP服务器,通过静态NAT方式供外网用户访问,对外的地址是1 ...

  5. POJ2669不错的最大流 竞赛问题(枚举King的个数)

    题意:       有n个人,任意两个人都比一次赛(一共比了n*(n-1)/2场),赢一场得到一分,最后的时候如果得分最高,或者是自己打败了所有比自己得分都高的人就算是King,给你每个人的最后得分, ...

  6. Docker仓库-Docker Hub

    Docker Hub Docker官方维护了一个公共仓库Docker Hub,其中已经包括了数量上百万的镜像,大部分需求都可以通过在Docker Hub 中直接下载镜像来实现. 注册: https:/ ...

  7. 将HTML字符串编译为虚拟DOM对象的基础实现

    本文所有代码均保存在HouyunCheng / mini-2vdom 虚拟DOM只是实现MVVM的一种方案,或者说是视图更新的一种策略,是实现最小化更新的diff算法的操作对象. 创建扫描器 所有编译 ...

  8. .Net Core平台下,添加包的引用

    一个程序的开发过程中离不开对程序集(Assembly,将程序集打包好,就成为一个.dll的包文件,它也叫动态链接库(Dynamic Link Library​))的依赖,在以前ASP.Net时代,微软 ...

  9. Windows进程间通讯(IPC)----内存映射文件

    内存映射文件原理 内存映射文件是通过在虚拟地址空间中预留一块区域,然后通过从磁盘中已存在的文件为其调度物理存储器,访问此虚拟内存空间就相当于访问此磁盘文件了. 内存映射文件实现过程 HANDLE hF ...

  10. MySQL备份脚本,应该这么写

    前言: 数据库备份的重要性不言而喻,特别是在生产环境,任何数据的丢失都可能产生严重的后果.所以,无论什么环境,我们都应该有相应的备份策略来定时备份数据库.在 MySQL 中,比较常用的逻辑备份工具是 ...