jMeter - 函数
JMeter 函数和用户变量
JMeter 函数是特殊值,可以填充测试树中任何采样器或其他元素的字段。
函数调用如下所示 −
${__functionName(var1,var2,var3)}
_functionName 与函数名称匹配。例如 ${__threadNum}。
如果函数参数包含逗号,请确保使用"\"对其进行转义,如下所示 −
${__time(EEE\, d MMM yyyy)}
变量引用为 −
${VARIABLE}
函数列表
下表列出了一组松散地分为不同类型的函数 −
函数类型 | 名称 | 注释 |
---|---|---|
信息 | threadNum | 获取线程号。 |
信息 | samplerName | 获取采样器名称(标签)。 |
信息 | machineIP | 获取本地机器 IP 地址。 |
信息 | machineName | 获取本地机器名称。 |
信息 | time | 以各种格式返回当前时间。 |
信息 | log | 记录(或显示)一条消息(并返回值)。 |
信息 | logn | 记录(或显示)一条消息(返回值为空)。 |
输入 | StringFromFile | 从文件中读取一行。 |
输入 | FileToString | 读取整个文件。 |
输入 | CSVRead | 从 CSV 分隔文件读取。 |
输入 | XPath | 使用 XPath 表达式从文件读取。 |
计算 | counter | 生成一个递增的数字。 |
计算 | intSum | 添加 int 数字。 |
计算 | longSum | 添加长数字。 |
计算 | Random | 生成一个随机数。 |
计算 | RandomString | 生成一个随机字符串。 |
计算 | UUID | 生成随机类型 4 UUID。 |
脚本 | BeanShell | 运行 BeanShell 脚本。 |
脚本 | javaScript | 处理 JavaScript (Mozilla Rhino)。 |
脚本 | jexl、jexl2 | 评估 Commons Jexl表达式。 |
属性 | property | 读取属性。 |
属性 | P | 读取属性(简写方法)。 |
属性 | setProperty | 设置 JMeter 属性。 |
变量 | split | 将字符串拆分为变量。 |
变量 | V | 评估变量名称。 |
变量 | eval | 评估变量表达式。 |
变量 | evalVar | 评估存储在变量中的表达式。 |
字符串 | regexFunction | 使用正则表达式解析先前的响应。 |
字符串 | escapeOroRegexpChars | 引用 ORO 正则使用的元字符表达式。 |
字符串 | char | 从数字列表生成 Unicode char 值。 |
字符串 | unescape | 处理包含 Java 转义符的字符串(例如 & )。 |
字符串 | unescapeHtml | 解码 HTML 编码的字符串。 |
字符串 | escapeHtml | 使用 HTML 编码对字符串进行编码。 |
字符串 | TestPlanName | 返回当前测试计划的名称。 |
有两种函数 −
用户定义的静态值(或变量)
内置函数
用户定义的静态值允许用户在编译并提交测试树以进行运行时定义要用其静态值替换的变量。
变量不能嵌套;即 ${Var${N}}} 不起作用。
__V(变量)函数(2.2 之后的版本)可用于执行此操作 − ${__V(Var${N})}。
这种类型的替换可以在没有函数的情况下进行,但不太方便,也不太直观。
在哪里使用函数和变量
函数和变量可以写入任何测试组件的任何字段。
以下函数应该可以在测试计划 − 中很好地工作
- intSum
- longSum
- machineName
- BeanShell
- javaScript
- jexl
- random
- time
- property 函数
- log 函数
测试计划中使用的函数有一些限制。在处理函数时,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 − 最后一个样本是否正常 − true/false。注意 − 在运行后处理器和断言后会更新。
START 变量。
预定义属性
一些内置属性由 JMeter 定义。它们是下面列出。为方便起见,START 属性也被复制到具有相同名称的变量中。
START.MS − JMeter 启动时间(以毫秒为单位)。
START.YMD − JMeter 启动时间为 yyyyMMdd。
START.HMS − JMeter 启动时间为 HHmmss。
TESTSTART.MS − 测试启动时间(以毫秒为单位)。
请注意,START 变量/属性代表 JMeter 启动时间,而不是测试启动时间。它们主要用于文件名等。