接口测试 JMeter 函数介绍

膨化先生 · 2019年04月23日 · 1543 次阅读

JMeter49 个函数总结,由公众号的文章汇总到这里

一、__BeanShell:beanshell 函数

参数含义 是否必填
要执行的 beanshell 语句(不可以是文件地址) 必填
用于引用此函数的变量名称 非必填

举例:

${__BeanShell(123*456)}
返回:56088

${__BeanShell(source("function.bsh"))}
执行外部脚本 function.bsh,并返回结果

二、__changeCase:字符串格式变换

参数含义 是否必填
待变更的字符串 必填
UPPER(默认)大写,LOWER 小写,CAPITALIZE 首字母大写其余小写 必填
用于引用此函数的变量名称 非必填

举例:

${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}
返回:AVARO OMNIA DESUNT, INOPI PAUCA, SAPIENTI NIHIL

${__changeCase(LABOR OMNIA VINCIT IMPROBUS,LOWER,)}
返回:labor omnia vincit improbus

${__changeCase(omnibus viis romam pervenitur,CAPITALIZE,)}
返回:Omnibus viis romam pervenitur

三、__char:unicode 字符编号

参数含义 是否必填
十进制或十六进制 Unicode 字符编号 必填

举例:

${__char(041)}
返回:!

${__char(0x21)}
返回:!

${__char(165)}
返回:¥

四、__counter:计数器函数

参数含义 是否必填
TRUE 多线程用户分别计数,FALSE 多线程用户合并计数 必填
用于引用此函数的变量名称 非必填

五、__CSVRead:从文件中读取指定的值

参数含义 是否必填
要读取的文件名,或为文件别名 必填
若为单线程,0 表示第一行的第一列的取值,1 表示第一行的第二列的取值,或为文件别名 必填

举例:random.txt 文件,内容为 a,1

${__CSVRead(random.txt,0)}
返回:a

${__CSVRead(random.txt,*file)}

${__CSVRead(*file,1)}
返回:1

六、__dateTimeConvert:时间格式转换

参数含义 是否必填
转换前的时间字符串 必填
转换前的日期格式,为空则转换前的时间字符串必须为 unix 时间戳格式 非必填
转换后的日期格式 必填
用于引用此函数的变量名称 非必填

举例:

$ {__ dateTimeConvert(01212018,MMDDYYYY,DD / MM / YYYY,)}
返回:21/01/2018

$ {__ dateTimeConvert(1526574881000,,dd / MM / yyyy HH:mm,)}
返回:17/05/2018 16:34

七、__digest:字符串加密

参数含义 是否必填
加密算法:MD2,MD5,SHA-1,SHA-224,SHA-256,SHA-384,SHA-512 必填
加密前的字符串 必填
Salt 表示在加密前字符串后加的字符串 非必填
默认为小写,TRUE 则为大写 非必填
用于引用此函数的变量名称 非必填

举例:

$ {__ digest(MD5,Errare humanum est ,,,)}
返回:c49f00b92667a35c63708933384dad52

$ {__ digest(SHA-256,Felix qui potuit rerum cognoscere causas,mysalt ,,)}
返回:a3bc6900fe2b2fc5fa8a601a4a84e27a079bf2c581d485009bc5c00516729ac7

八、__escapeHtml:html 4.0 格式转义字符串

参数含义 是否必填
要转义的字符串 必填

举例:

${__escapeHtml("bread" & "butter")}
返回:

"bread" & "butter"

九、__escapeOroRegexpChars:转义正则表达式中元字符

参数含义 是否必填
要转义的字符串 必填
用于引用此函数的变量名称 非必填

举例:

${__escapeOroRegexpChars(["].+?,)}
返回:

\[\^\"\]\.\+\?

十、__escapeXml:xml 1.0 格式转义字符串

参数含义 是否必填
要转义的字符串 必填

举例:

${__escapeXml("bread" & 'butter')}
返回:

"bread" & 'butter'

十一、__eval:返回字符串表达式中的结果

参数含义 是否必填
要返回的表达式 必填

举例:

name=Smith
column=age
table=birthdays
SQL=select ${column} from ${table} where name='${name}'

${__eval(${SQL})}

="select age from birthdays where name='Smith' "

十二、__evalVar:返回变量表达式中的结果

参数含义 是否必填
要返回的表达式 必填

举例:

变量 query 包含 select ${column} from ${table}
column 包含 name
table 包含 customers

${__eval(${query})}

="select name from customers"

十三、__FileToString:字符串形式展示文件内容

参数含义 是否必填
要转成字符串的文件名的路径 必填
文件编码格式,未指定则默认平台默认值 非必填
用于引用此函数的变量名称 非必填

举例:

存在文件内容
${__FileToString(D:\example.txt,,)}
返回文件内容

不存在文件
${__FileToString(D:\example.txt,,)}
返回字符串"ERR"

十四、__groovy:执行 groovy 语句

参数含义 是否必填
要执行的 groovy 语句(不可以是文件地址) 必填
用于引用此函数的变量名称 非必填

举例:

${__groovy(123*456,)}
返回:56088

变量 myVar 值为 Selenim
${__groovy(vars.get("myVar").substring(0\,2),)}
返回:Se

十五、__intSum:用于计算两个或更多 int 型整数的总和

参数含义 是否必填
int 型第一个数 必填
int 型第二个数 必填
int 型第 N 个数 非必填
用于引用此函数的变量名称 非必填

举例:

${__intSum(2,5,)}
返回:7

${__intSum(2,5,7,)}
返回:14

十六、__isPropDefined:判断是否属于 JMeter 的属性

参数含义 是否必填
属性名称 必填

举例:

${__isPropDefined(START.HMS)}
返回:ture

${__isPropDefined(START.HM)}
返回:false

十七、__isVarDefined:判断变量名称是否存在

参数含义 是否必填
变量名称 必填

举例:

变量 myVar 值为 Selenim
${__isVarDefined(myVar)}
返回:true

不存在变量 myVar
${__isVarDefined(myVar)}
返回:false

十八、__javaScript:执行 javaScript 表达式(做性能不推荐使用)

参数含义 是否必填
要执行的 javaScript 表达式 必填
用于引用此函数的变量名称 非必填

举例:

${__javaScript(new Date())}
返回:当前时间和日期

${__javaScript(Math.random(),)}
返回:大于等于 0.0 且小于 1.0 的伪随机 double 值

变量 maxRandom 为最大随机数 10
${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),)}
返回:0 到 maxRandom 之间的随机浮点数,1 位小数且为 0,如 5.0

变量 maxRandom 为最大随机数 10
变量 minRandom 为最大随机数 1
${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),)}
返回:minRandom 到 maxRandom 之间的随机浮点数,1 位小数且为 0,如 5.0

变量 var 值为 abcd
${__javaScript("${var}"=="abcd",)}
返回:ture

十九、__jexl2:使用 JEXL2 执行 JEXL 表达式

参数含义 是否必填
要执行的 JEXL 表达式 必填
用于引用此函数的变量名称 非必填

举例:

${__jexl2(123*456,)}
返回:56088

二十、__jexl3:使用 JEXL3 执行 JEXL 表达式

参数含义 是否必填
要执行的 JEXL 表达式 必填
用于引用此函数的变量名称 非必填

举例:

${__jexl3(123*456,)}
返回:56088

二十一、__log:记录 log 日志并输出

参数含义 是否必填
要记录的 log 日志字符串 必填
日志级别:OUT,ERR,DEBUG,INFO(默认),WARN 或 ERROR 非必填
默认异常信息 非必填
用来识别输出的内容 非必填

举例:

${__log(Message,,,)}
写入 info 日志文件,返回:Message

${__log(Message,OUT,,)}
输出到 System.out,返回:Message

${__log(Message,ERR,,)}
输出到 System.err,返回:Message

${__log(Message,ERROR,,ERROR=)}
写入 error 日志文件,返回:ERROR= Message

二十二、__logn:记录 log 日志,并返回空字符串

参数含义 是否必填
要记录的 log 日志字符串 必填
日志级别:OUT,ERR,DEBUG,INFO(默认),WARN 或 ERROR 非必填
默认异常信息 非必填

举例:

${__log(Message,,)}
写入 info 日志文件,返回:空

${__log(Message,OUT,)}
输出到 System.out,返回:空

${__log(Message,ERR,)}
输出到 System.err,返回:空

${__log(Message,ERROR,1234)}
写入 error 日志文件,抛出异常信息 Throwable:1234,返回:空

二十三、__longSum:用于计算两个或更多 long 型整数的总和

参数含义 是否必填
long 型第一个数 必填
long 型第二个数 必填
long 型第 N 个数 非必填
用于引用此函数的变量名称 非必填

举例:

${__longSum(2,5,)}
返回:7

${__longSum(2,5,7,)}
返回:14

二十四、machineIP:本机的 ip

参数含义 是否必填
用于引用此函数的变量名称 非必填

举例:

${__machineIP()}
返回:本机 IP 地址

${__machineIP}
返回:本机 IP 地址

二十五、__machineName:本机的主机名

参数含义 是否必填
用于引用此函数的变量名称 非必填

举例:

${__machineName()}
返回:本机的主机名

${__machineName}
返回:本机的主机名

二十六、P:显示属性值,property 的简化版,无法用另一变量引用

参数含义 是否必填
属性名称 必填
属性未定义,则显示的默认值 非必填

举例:

jmeter.properties 有属性 remote_hosts,且值为 127.0.0.1
${__P(remote_hosts,2)}
返回:127.0.0.1

jmeter.properties 没有属性 remote_hosts
${__P(remote_hosts,2)}
返回:2

二十七、property:显示属性值,比P 多了可以引用的变量

参数含义 是否必填
属性名称 必填
属性未定义,则显示的默认值 非必填
用于引用此函数的变量名称 非必填

举例:

jmeter.properties 有属性 remote_hosts,且值为 127.0.0.1
${__property(remote_hosts,,2)}
返回:127.0.0.1

jmeter.properties 没有属性 remote_hosts
${__property(remote_hosts,,2)}
返回:2

二十八、__Random:随机返回两个整数之间的值

参数含义 是否必填
较小的整数 必填
较大的整数 必填
用于引用此函数的变量名称 非必填

举例:

${__Random(0,10)}
返回:0~10 之间的任一整数

二十九、__RandomDate:随机生成指定时间段内的日期

参数含义 是否必填
时间格式,默认为 yyyy-MM-dd 非必填
开始的时间,默认为现在 非必填
结束的时间 必填
时区 非必填
用于引用此函数的变量名称 非必填

举例:

${__RandomDate(,,2019-09-10,,)}
返回:今天到 2019-09-10 之间的任一日期,如 2019-06-08

${__RandomDate(,2010-09-10,2010-12-25,,)}
返回:2010-09-10 到 2010-12-25 之间的任一日期,如 2019-06-08

${__RandomDate(yyyyMMdd,,20190910,,)}
返回:今天到 20190910 之间的任一日期,如 20190608

${__RandomDate(,,2019-09-10,zh_CN,)}
返回:今天到 20190910 之间的中国时区任一日期,如 2019-06-08

三十、__RandomFromMultipleVars:从多个变量的值中随机选取一个值

参数含义 是否必填
待取值的变量,不同的变量之间用符号 “|” 分割 必填
用于引用此函数的变量名称 非必填

举例:

变量 var1 值为 1
${__RandomFromMultipleVars(var1,)}
返回:1

变量 var1 值为 1,变量 var2 值为 2
${__RandomFromMultipleVars(var1|var2,)}
返回:1 或 2

变量 var1 值为 ${Random(1,10,)},变量 var2 值为 ${Random(11,100,)}
${__RandomFromMultipleVars(var1|var2,)}
返回:1 到 100 之间的随机数

三十一、__RandomString:生成一个指定长度的字符串

参数含义 是否必填
指定字符串的长度 必填
生成字符串的取值范围 非必填
用于引用此函数的变量名称 非必填

举例:

${__RandomString(5,,)}
返回:一个包含任意 5 字符的字符串

${__RandomString(5,1234567890,)}
返回:一个包含 5 个数字的字符串,如 21346

${__RandomString(5,qwertyuiopasdfghjklzxcvbnm,)}
返回:一个 5 为小写英文字符的字符串,如 ewffk

三十二、__regexFunction:解析正则表达式

参数含义 是否必填
正则表达式 必填
模版 必填
匹配项,默认匹配第一个值:一个数字,匹配第几个值;RAND,随机匹配一个值;ALL,所有匹配项的值;一个浮点数 非必填
匹配项填写 ALL,此项必填 非必填
缺省值 非必填
匹配项的属性值 非必填
用于引用此函数的变量名称 非必填

举例:

响应数据包括:<!--STATUS OK-->
${__regexFunction(<!--STATUS(.*?)-->,$1$,,,,,)}
返回:OK

三十三、__samplerName:显示采样器名称

参数含义 是否必填
用于引用此函数的变量名称 非必填

举例:

${__samplerName()}
返回:采样器名称

三十四、__setProperty:设置属性值

参数含义 是否必填
属性名称 必填
属性值 必填
是否返回上一次的属性值,填 True 或 False 非必填

举例:

${setProperty(hostname,2,)}
返回:${
P(hostname,1)}值为 2

${__setProperty(hostname,2,True)}
返回:2

第一次 ${setProperty(hostname,2,)}
${
setProperty(hostname,3,True)}
返回:2

三十五、__split:字符串切割

参数含义 是否必填
待切割的字符串 必填
用于引用此函数的变量名称 必填
切割符,默认为, 非必填

举例:

${__split(qwe*asd*zxc,var,*)}
返回:var_1 值为 qwe,var_2 值为 asd,var_3 值为 zxc

${__split(qwe\,asd\,zxc,var,)}
返回:var_1 值为 qwe,var_2 值为 asd,var_3 值为 zxc

三十六、__StringFromFile:读取文件中的字符串

参数含义 是否必填
文件名,在 JMeter 启动目录中可以只填名称,否则需要填路径 + 名称 必填
用于引用此函数的变量名称 非必填
文件开始的序列号 非必填
文件结束的序列号 非必填

举例:

bin 配置 text 文件值为 qwe
${__StringFromFile(text.text,,,)}
返回:qwe

bin 配置 text 文件值为
qwe
asd
zxc
线程数为 3
${__StringFromFile(text.text,,,)}
返回:第一个线程返回 qwe,第二个线程返回 asd,第三个线程返回 zxc

bin 配置 text1 文件值为 qwe,text2 文件值为 asd
线程数为 2
${__StringFromFile(text.text,,1,2)}
返回:第一个线程返回 qwe,第二个线程返回 asd

三十七、__StringToFile:用于将一个字符串写入到指定的文件当中

参数含义 是否必填
文件名的路径(需要填写文件的绝对路径) 必填
准备写入的字符串(使用\n 当作换行符) 必填
对文件进行覆盖还是追加(true 表示追加,false 表示覆盖,默认为追加) 非必填
文件编码,默认为 utf-8 非必填

举例:

新建 example.txt
${__StringToFile(D:\example.txt,selenium 测试,,)}
返回:true
example.txt 文件显示:selenium 测试

${__StringToFile(D:\example.txt,jmter5.2,true,)}
返回:true
example.txt 文件显示:selenium 测试 jmeter5.2

${__StringToFile(D:\example.txt,selenium 测试\njmeter5.2,false,)}
返回:true
example.txt 文件显示:selenium 测试
jmeter5.2

三十八、__TestPlanName:显示当前打开的文件名称

参数含义 是否必填

举例:

${__TestPlanName}
返回:当前打开的文件名

三十九、__threadGroupName:显示当前正在执行的线程组名称

参数含义 是否必填

举例:

${__threadGroupName}
返回:当前正在执行的线程组名称

四十、__threadNum:显示当前正在执行的线程组的名称的编号

参数含义 是否必填

举例:

线程数为 2
${__threadNum}
返回:当前正在执行的线程组序号,第一个线程组显示 1,第二个线程组显示 2

四十一、__time:以不同格式返回当前时间

参数含义 是否必填
待显示的时间格式 非必填
用于引用此函数的变量名称 非必填

举例:

${__time(,)}
返回:当前时间的时间戳

${time(YMD,)}=${time(yyyyMMdd,)}
返回:当前日期 20190609

${time(YMDHMS,)}=${time(yyyyMMdd-HHmmss,)}
返回:当前日期和时间 20190609-123000

四十二、__timeShift:生成与指定时间相差一段时间的时间

参数含义 是否必填
待显示的时间格式 非必填
待显示的时间,默认为当前 非必填
与指定时间相差的一段时间 非必填
时区 非必填
用于引用此函数的变量名称 非必填

举例:

${__timeShift(,,,,)}
返回:当前时间的时间戳

${timeShift(YMD,)}=${timeShift(yyyyMMdd,)}
返回:当前日期 20190609

${timeShift(YMDHMS,,,,)}=${timeShift(yyyyMMdd-HHmmss,)}
返回:当前日期和时间 20190609-123000

${__timeShift(yyyyMMdd,20190910,,,)}
返回:指定日期 20190910

${__timeShift(yyyyMMdd,,P1D,,)}
返回:明天的日期 20190610

${__RandomDate(yyyyMMdd-HHmmss,,,zh_CN,)}
返回:当前时间一小时之前的中国时区的时间,

四十三、__unescape:对 escape 编码的字符串进行解码

参数含义 是否必填
待解码的字符串 必填

举例:

${__unescape(1\t2)}
返回:1 2(中间是 tab 符)

四十四、__unescapeHtml:对包含 HTML 实体的字符串进行解码

参数含义 是否必填
待解码的字符串 必填

举例:

${__unescapeHtml("bread" & "butter" )}
返回:"bread" & "butter"

四十五、__urldecode:对 URL 字符串进行解码

参数含义 是否必填
待解码的字符串 必填

举例:

${__urldecode(selenium%E6%B5%8B%E8%AF%95)}
返回:selenium 测试

四十六、__urlencode:对 URL 字符串进行转码

参数含义 是否必填
待转码的字符串 必填

举例:

${__urlencode(selenium 测试)}
返回:selenium%E6%B5%8B%E8%AF%95

四十七、__UUID:显示随机通用唯一标示码(UUID4)

参数含义 是否必填

举例:

${__UUID}
返回:32 位 uuid 值

四十八、__V:执行变量名表达式生成结果

参数含义 是否必填
待执行的变量 必填
变量不存在,或者变量值为空,显示默认值 非必填

举例:

变量 var 不存在
${__V(var,1)}
返回:1

变量 var 的值为 1
${__V(var,)}
返回:1

变量 var1 的值为 1,变量 N 的值为 1
${__V(var${N},)}
返回:1

四十九、__XPath:读取 xml 文件中指定 xpath 路径的内容,如果匹配不到文件 log 日志中记录 warn 警告信息

参数含义 是否必填
待读取的 xml 文件 必填
xpath 路径 必填

举例:

xm 文件内容Selenium 测试,xml 文件目录/path/123.xml
${__XPath(/path/123.xml,//a[@name='name'])}
返回:Selenium 测试

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
暂无回复。
需要 登录 后方可回复, 如果你还没有账号请点击这里 注册