JMeter函数和用户变量
JMeter函数是可以填充测试树中任何Sampler或其他元素的字段的特殊值.
函数调用如下所示;
${__functionName(var1,var2,var3)}
_functionName 匹配函数的名称.例如 $ {__ threadNum} .
如果函数参数包含逗号,请确保使用""对此进行转义"如下图所示 :
${__time(EEE\, d MMM yyyy)}
变量被引用为 :
${VARIABLE}
功能列表
下表列出了一组松散地分为类型和减号的函数;
| 函数类型 | 名称 | 评论 | 
|---|---|---|
| 信息 | threadNum | 获取线程编号 | 
| 信息 | samplerName | 获取采样器名称(标签) | 
| 信息 | machineIP | 获取本地计算机IP地址 | 
| 信息 | machineName | 获取本地机器名 | 
| 信息 | 时间 | 以各种格式返回当前时间 | 
| 信息 | log | 记录(或显示)一条消息(并返回该值) | 
| 信息 | logn | 记录(或显示)消息(空返回值) | 
| 输入 | StringFromFile | 从文件中读取一行 | 
| 输入 | FileToString | 读取整个文件 | 
| 输入 | CSVRead从CSV | 分隔文件中读取 | 
| 输入 | XPath | 使用从文件中读取的XPath表达式 | 
| 计算 | 计数器 | 生成一个递增的数字 | 
| 计算 | intSum | 添加数字 | 
| 计算 | longSum | 添加长号 | 
| 计算 | 随机 | 生成一个随机数 | 
| 计算 | RandomString | 生成随机字符串 | 
| 计算 | UUID | 生成随机类型4 UUID | 
| 脚本 | BeanShell | 运行BeanShell脚本 | 
| 脚本 | javaScript | 处理JavaScript(Mozilla Rhino) | 
| 脚本 | jexl,jexl2 | 评估Commons Jexl表达式 | 
| 属性 | property | 读取房产 | 
| 房产 | P | 读取属性(速记方法) | 
| 属性 | setProperty | 设置JMeter属性 | 
| 变量 | split | 将字符串拆分为变量 | 
| 变量 | V | 评估变量名称 | 
| 变量 | eval | 评估变量表达式 | 
| 变量 | evalVar | 评估存储在变量中的表达式 | 
| String | regexFunction | Parse使用正则表达式的先前响应 | 
| String | e scapeOroRegexpChars | 引用ORO正则表达式使用的元字符 | 
| String | char | 从数字列表中生成Unicode字符值 | 
| String | unescape | 包含Java转义的进程字符串(例如\ n& \ t) | 
| String | unescapeHtml | 解码HTML编码的字符串 | 
| String | escapeHtml | 使用HTML编码对字符串进行编码 | 
| String | TestPlanName | 返回当前测试计划的名称 | 
有两种功能 :
o 用户定义的静态值(或变量)
o 内置函数
用户定义的静态值允许用户在编译测试树并提交运行时定义要用其静态值替换的变量;
变量不能嵌套;即 $ {Var $ {N}} 不起作用;
__V(变量)函数(2.2之后的版本)可以用来做这个 : 去; $ {__ V(无功$ {N})};
这种类型的替换可以在没有功能的情况下进行,但不太方便且不太直观。
函数和变量可以写入任何测试组件的任何字段。
以下函数应该在测试计划中正常工作 :
o intSum
o longSum
o machineName
o BeanShell
o javaScript
o jexl
o random
o time
o 属性函数
o 日志函数
测试计划中使用的函数有一些限制.处理函数时,JMeter线程变量尚未完全设置,因此不会设置作为参数传递的变量名称,并且变量引用将不起作用.因此, split()和 regex()并且变量评估函数将不起作用. threadNum()函数不起作用,在测试计划级别没有意义。
在测试元素中引用变量是通过将变量名称括在'$ {'和'}'来完成的;
函数以相同的方式引用,但按照惯例,函数名称以"__"开头,以避免与用户值名冲突。
有些函数会使用参数来配置它们,这些函数用括号括起来,用逗号分隔.如果函数不带参数,则可以省略括号.例如 :
${__ BeanShell(vars.put("name"\ ,"value"))}
或者,您可以将脚本定义为变量,例如关于测试计划 :
SCRIPT vars.put("name","value" ")
然后可以引用脚本如下 :
${__ BeanShell($ {SCRIPT})}
函数帮助程序对话框
可以从JMeter的选项选项卡中找到函数帮助程序对话框;
使用函数帮助器,您可以从下拉列表中选择一个函数,并为其参数赋值.表中的左列提供了参数的简要说明,右列是您为该参数写入值的位置.不同的函数有不同的参数;
完成后,单击"生成"按钮,生成相应的字符串,您可以复制粘贴在任何需要的地方进入测试计划。
些变量是由JMeter在内部定义.它们是 :
COOKIE_cookiename : 包含cookie值。
JMeterThread.last_sample_ok : 最后一个样本是否为OK : true/false.注意 : 这在PostProcessors和Assertions运行后更新。
START变量。
一些内置属性由JMeter定义.下面列出了这些属性.为方便起见,START属性也被复制到具有相同名称的变量。
o START.MS : JMeter开始时间(以毫秒为单位)
o START.YMD : JMeter的开始时间为yyyyMMdd.
o START.HMS : JMeter的开始时间为HHmmss.
o TESTSTART.MS : 测试开始时间(以毫秒为单位).
请注意,START变量/属性表示JMeter启动时间,而不是测试开始时间.它们主要用于文件名等。