- JMeter 教程
- JMeter - 首页
- JMeter - 概述
- JMeter - 环境
- JMeter - 构建测试计划
- JMeter - 测试计划元素
- JMeter - Web 测试计划
- JMeter - 数据库测试计划
- JMeter - FTP 测试计划
- JMeter - Web 服务测试计划
- JMeter - JMS 测试计划
- JMeter - 监控测试计划
- JMeter - 监听器
- JMeter - 函数
- JMeter - 正则表达式
- JMeter - 最佳实践
- JMeter 资源
- JMeter - 快速指南
- JMeter - 有用资源
- JMeter - 讨论
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 | 添加整数。 |
计算 | 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 字符值。 |
字符串 | unescape | 处理包含 Java 转义符的字符串(例如 \n 和 \t)。 |
字符串 | 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 启动时间,而不是测试启动时间。它们主要用于文件名等。