Jmeter函数助手
标签(空格分隔): Jmeter
在性能呢测试过程中为了真实的模拟用户,往往我们需要让提交的表单内容每次都发生变化,这个过程加参数化,Jmeter配置原件与前置处理器都能帮助我们进行参数化,单都有局限性,为了帮助我们进行参数化,Jmeter提供了一组函数来帮助我们生成需要的数据,这些函数助手面板来进行编辑,当然函数助手的功能不仅仅是进行参数化,还可以帮我们进行圆形,字符编码,格式转化,获取运行时参数的功能。 函数都是以${__function()}
这种形式开始的,其中“__”是英文的半角下横线,function是函数名,其中参数是不同的函数而定
函数列表
JMeter总计七大类型的函数类型如下:
信息类: 用于读取线程、请求名等 输入类: 用于读取文件等 计算类: 用于计数、求和等 脚本类: 用于运行各类脚本,例如groovy、beanshell等等 属性类: 读取或设置jmeter配置 变量类: 用于对变量进行操作 字符串类: 用于字符串处理
信息类
主要用于获取一些常用的基本信息或是日志输出控制。 |编号|函数名|描述| |--| |1|__threadnum|函数线程数| |2|__samplerName|说起当前请求的名称| |3|__machineIP|获取本机的IP地址| |4|__machineNmae|获取本机的名称| |5|__time|返回指定格式的时间| |6|__log|日志输出,并返回它的输入字符串| |7|__logn|日志输出,并返回空的字符串|
###输入类 |编号|函数名|描述| |--| |1|__StringFromFile|函数线程数| |2|__FileToString|获取当前请求的名称| |3|__CSVRead|读取csv格式文件数据| |4|__XPath|使用xpath读取xml文件中的数据|
计算类
主要用于从外部文件读取数据,进行参数化或是说关联 |编号|函数名|描述| |--| |1|__counter|生成一个自增数| |2|__intSum|整数求和| |3|__logSum|长整数求和| |4|__Random|生成随机数| |5|__RandomFromMultipleVars|从一组数据中提取一个数据| |6|__RandomStrgin|生成随机字符串| |7|__UUID|生成随机的唯一的UUID|
脚本本类
主要用于调用外部脚本或是解析执行脚本
|编号|函数名|描述| |--| |1|__groovy|执行groovy脚本| |2|__BeanShell|执行BeanShell脚本| |3|__javaScript|执行javaScript的脚本| |4|__jexl2|执行jexl2表达式| |5|__jexl3|执行jexl3表达式|
属性类
用于读取和设置jmeter配置 |编号|函数名|描述| |--| |1|__property|读取属性值| |2|__P|读取属性值(__property)的简写| |3|__setProperty|设置属性值|
###变量类 主要用于验证变量表达式引用是否正确 |编号|函数名|描述| |--| |1|__sqlit|拆分字符串| |2|__V|执行变量名表da's达式的返回结果| |3|__eval|执行字符串表达式,并返回结果| |4|__evalVar|执行保存在变量中的表达式,并返回结果|
字符串类
用于字符串操作
|编号|函数名|描述| |--| |1|__regexFunction|使用正则表达式| |2|__escapeOroRegexpChars|用于转义正则表达式中的字符| |3|__char|将一串数字转换成成unciode的字符| |4|__unescape|用于反转义java-escape字符串| |5|__unescapeHtml|解码html-encode字符串| |6|__escapeHtml|使用html coding编码目标字符串| |7|__escapeXml|使用XML codingbiao'ma编码目标字符串| |8|__urldecode|解码urlcode| |9|__urlencode| 编码为urlcode| |10|__TestPlanName|获取当前测试计划|
##常用函数的介绍
__time 函数
获取系统的当前时间
函数参数 | 描述 |
---|---|
Format string for SimpleDateFormat (optional)格式 | 设置时间所采用的格式 |
Name of variable in which to store the result (optional)变量名 | 存储结果的变量名称 |
如果省略了格式字符串,time函数会返回当前时间的毫秒级时间戳。 time函数包含以下时间格式
- YMD = yyyyMMdd。
- HMS = HHmmss。
- YMDHMS = yyyyMMdd-HHmmss。
- 也可以加入字符修改样式
- 用户可以通过修改JMeter属性来改变默认格式,例如,time.YMD=yyMMdd。
time毫秒时间戳转秒时间戳
__Random 函数
生成随机数
函数参数 | 描述 |
---|---|
FThe minimum value allowed for a range of value | 随机数取值范围的最小值 |
The maximum value allowed for a range of values | 取值范围的最大值 |
Name of variable in which to store the result (optional) | 存储结果的变量名称 |
- 在1000-10000之间生成随机数
__RandomString
随机生成字符串
函数参数 | 描述 |
---|---|
Random string length | 随机字符串的长度 |
Chars to use for random string generation | 用来生成随机字符串的字符 |
Name of variable in which to store the result (optional) | 存储结果的变量名称 |
__RandomDate
随机生成日期
函数参数 | 描述 |
---|---|
Format string for DateTimeFormatter (optional) (default yyyy-MM-dd) | 日期格式 默认yyyy-mm-dd |
Start date (optional) (default: now) | 随机日期的开始日期,默认为现在 |
End date | 结束日期 |
String format of a locale (ex: fr_FR , en_EN) (optional) | 语言区域 |
Name of variable in which to store the result (optional) | 存储结果的变量名称 |
__threadNum
返回当前线程的编号
__log
记录一条日志,并返回输入的字符串
函数参数 | 描述 |
---|---|
String to be logged (and returned) | 日志信息 |
Log level (default INFO) or OUT or ERR | 日志等级。OUT会在控制台输出,ERR、INFO、DEBUG在日志文件内输出 |
Throwable text (optional) | 可抛弃的文本,如果非空,会创建一个可抛弃的文本传递给记录器 |
Additional comment (optional) | 注释如果存在,注释会在字符串中展示,用于标识日志记录了什么 |
__jexl3
函数_jexl可以用于执行通用JEXL表达式,并返回执行结果。
函数参数 | 描述 |
---|---|
JEXL expression to evaluate | 待执行的表达式 |
Name of variable in which to store the result (optional) | 存储结果的变量名称 |
如下变量可以通过脚本进行访问。
log:函数记录器。
ctx:JMeterContext对象。
vars:JMeterVariables对象。
props:JMeter属性对象。
threadName:字符串包含当前线程名称 (在2.3.2 版本中它被误写为"theadName")。
sampler:当前的采样器对象(如果存在)。
sampleResult:前面的采样结果对象(如果存在)。
OUT - System.out,例如 OUT.println("message")。 是你用vars的例子参考 Sampler 章节的jdbc-request