jmeter函数助手

函数助手的功能1、做参数化。2、还能帮助我们运算、字符编码格式转换、获取运行时参数等功能

分为两类:自带函数、扩展函数

函数调用格式:

${__functionName(var1,var2,var3)}

其中,“__”是两个英文半角的下划线,functionName为函数名,括号内是函数的参数,无参数时可以不用括号,如${__UUID},其中参数视不同函数而定。

Tips:

如果参数包含逗号,那么一定要使用“\”来转义,否则JMeter会把它当作一个参数分隔符

实际使用时,可通过函数助手对话框选择函数,设置参数后,点击生成按钮生成函数字符串

函数名严格区分大小写,函数里面可以套函数。

主要分类

下面讲详细汇总比较重要常用的函数。

 脚本函数:

1、__BeanShell函数

1.1用来写beansheel脚本的。在性能测试中,不要用beanSheel字样的。会影响性能

该函数与beanshell元件(beanshell sampler、beanshell preprocess等)作用是一样的,只是beanshell函数更常用于一些简单的判断或计算等,可以把少量的脚本放在函数中直接赋值给一个变量,而不用总是添加beanshell元件。

1.2 关键参数:

第一个参数是要执行的语句,可以是beanshell语句或者是文件地址,是必选参数;

第二个参数是保存结果的变量名称,非必选参数。

2、JavaScript函数

执行JavaScript脚本片段,并返回结果值。

2、字符串操作函数

2.1__split函数

根据分隔符拆分字符串为多个变量;当两个分隔符中间没有字符时,返回 ?

 关键参数说明:

待拆分字符串

一个待拆分字符串,例如“a|b|c”

变量名

重用函数计算值的引用名

分隔符

分隔符,例如“|”。如果省略了此参数,函数会使用逗号做分隔符。需要注意的是,假如

要多此一举,明确指定使用逗号,需要对逗号转义,如“\,”

2.2__changeCase函数

根据指定的模式,修改字符串大小写;

可选模式有:UPPERLOWERCAPITALIZE

字符串修改

需要修改的字符串

模式

UPPER(-转换成大写字母LOWER(转换成小写字母CAPITALIZE(单词首字母大写)

存储结果的变量名

字符串修改后,存储的变量名,赋值的变量名

2.3__regexFunction函数

使用正则表达式解析之前的响应结果;这个函数的作用跟正则表达式提取器的作用是类似的。

3、属性信息函数

3.1__isPropDefined函数

用于判断属性是否存在。

页面如何查看jmeter有哪些属性,在测试计划下添加->非测试元件->显示属性

  Name of property:属性名称

3.2__property函数

  • jmeter运行过程中,会保存在内存中,没有写入文件,jmeter关闭,就会释放消失
  • 写混合场景的性能脚的时候,不想写代码,那么,你一定会用设置属性和获取属性的函数。(功能测试中,不怎么用)

3.3__P函数

_property 函数不同,没有选项可以将值保存在变量中,如果不提供默认值,则假定为1。

 3.4__setProperty函数

该函数用于设置 JMeter 属性的值。

函数的默认返回值是空字符串,因此该函数可以被用在任何地方,只要对函数本身调用是正确的。

4、数据输入函数

__StringFromFile从文件中读取内容,一行一行的读取,读完再从头开始。

__CSVRead从文件读取指定列的值(读取固定值/读取动态值/使用文件别名)

__Xpath根据xpath获取xml节点内容,没有匹配到,则返回空字符串。

---尽可能不要使用在性能测试中,很容易出问题,可以使用读取文件的配置元件代替

5、数据计算函数

5.1__counter函数

计数器,只能做单一+1,

  • 每次调用该计数器函数都会产生一个新值,从1开始每次加1。
  • 配置元件中的计数器,可以实现每个并发用户数非1步长的计数

 第一个参数是布尔型的, 只能设置成“TRUE”或者“FALSE”,如果是TRUE,那么每个用户有自己的计数器,可以用于统计每个线程歌执行了多少次;

如果是FALSE,那就 使用全局计数器,可以统计出这次测试共运行了多少次。第二个参数是“函数名称”。

拖拽:计数器

例子:从2开始,每次增加2,上线为10。当达到最大值是,又会从起始值开始。

勾选与用户独立的跟踪计数器,可以实现每个用户独立的计时器

5.2__intSum函数

整数求和。可以被用来计算两个或者更多整数值的和。至少需要两个整数

 5.3__longSum该函数用来计算两个或更多长整型值的和。

5.4_Random函数

随机数函数返回指定最大值和最小值之间的随机整数

 5.5.__Randomdate

返回位于给定开始日期和结束日期值之间的随机日期。

5.6__RandomDate:时间段内随机取值时间

在这里插入图片描述
${__RandomDate(yyyy-MM-dd,2018-01-01,2018-12-31,variableName)}

Format string for DateTimeFormatter (optional) (default yyyy-MM-dd):日期格式化方法,默认为yyyy-MM-dd;

Start date (optional) (default: now):为开始日期,格式必须和日期格式化方法一致,如格式化方法不填,则此处格式需为2018-02-03,如不填则默认为现在;

End date:和Start date类似,但是此项必填;

String format of a locale (ex: fr_FR , en_EN) (optional):日期相关的地区信息,可以不填;

Name of variable in which to store the result (optional):参数名称,也可以不填;

5.7__RandomString函数

根据给定的字符,生成指定长度的随机字符串。

5.8__UUID函数

通用唯一标识符函数,生成一个32位不重复的随机字符串。

 6、输入信息函数

6.1、__TestPlanName函数

返回当前测试计划的名称

 6.2、__hthreadGroupName函数

返回当前线程组的名称

该函数不能用在任何配置元件中(如用户定义的变量),因为配置元件是由另外的独立线程运行的,它也不能在测试计划(Test Plan)中使用。

6.3、__samplerName返回当前请求的名称。获取当前按sampler的名称

6.4、__log记录一条日志,并返回函数的输入字符串

可以设置不同的日志级别,如 OUT 和 ERR 将会分别输出记录到 System.out 和 System.err 中。在这种情况下,输出总是会被打印(它不依赖于当前的日志设置)。

示例:

${__log(Message)}:写入日志文件,形如 "...thread Name : Message"。

${__log(Message,OUT)}:写到控制台窗口。

${__log(${VAR},,,VAR=)}:写入日志文件,形如"...thread Name VAR=value"。

6.5__time函数

以多种格式返回当前时间

格式:非必填项,格式如果不填那么就是默认获取当前时间的毫秒数(此项也常被用于接口参数中那些不允许重复的字段)
参数名称:非必填项,如果填了,则生成的时间会被放到该参数中,可以在任意地方调用这个参数,常用于多接口中某个值使用同一个时间参数的情况
在这里插入图片描述

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

${__time(,)}:获取当前时间的毫秒数;
${__time(,time_ms)}:获取当前时间的毫秒数并存入参数time_ms中;
${__time(/1000,)}:获取当前时间的秒数;
${__time(/1000,time_s)}:获取当前时间的秒数并存入参数time_s中;
${__time(yyyy-MM-dd,)}:获取当前日期;
${__time(yyyy-MM-dd,time_date1)}:获取当前日期并存入参数time_date1中;
${__time(yyyy-MM-dd HH:mm:ss,)}:获取当前时间,固定格式;
${__time(yyyyMMddHHmmss,time_2)}:获取当前时间,固定格式,并存入参数time_2中;
${__time(YMDHMS,)}:获取当前时间,固定格式
 

拓展

_timeShift函数

格式 - 将显示创建日期的格式。如果该值未被传递,则以毫秒为单位创建日期。
日期 - 这是日期值。用于如果要通过添加或减去特定天数,小时或分钟来创建特定日期的情况。如果参数值未通过,则使用当前日期。
移位 - 表示要从日期参数的值中添加或减去多少天,几小时或几分钟。如果该值未被传递,则不会将任何值减去或添加到日期参数的值中。

在这里插入图片描述
“P1DT2H4M5S” 解析为“添加1天2小时4分钟5秒”

“P-6H3M”解析为“-6小时+3分钟”

“-P6H3M”解析为“-6小时-3分钟”

“-P-6H + 3M”解析为“+6小时和-3分钟”

 7、其他函数

__machineName函数__machineName返回本机的主机名;

__machineIP返回电脑IP。

_base64Decode用于解密

__base64Encode用于加密

__evalVar可以用来执行保存在变量中的表达式,并返回执行结果

_eval可以用来执行一个字符串表达式,并返回执行结果

 __V可以用于执行变量名表达式,并返回执行结果。它可以被用于执行嵌套函数引用

__V函数,

用于执行嵌套函数执行。(jmeter 本身是不支持嵌套函数的,所以想要嵌套就得用这个函数!)

例:

  • ${A1}可以用正常引用
  • ${A${N}}不可用,不支持嵌套函数。
  • ${__V(A${N})}可用正常使用,A${N}会变成A1,_V函数会返回A1.

注意:不要加逗号,等于默认值这个参数,只需要第一个参数就可以了

 

  • 1
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值