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 启动时间,而不是测试启动时间。它们主要用于文件名等。

广告