jMeter - 函数

  • JMeter 函数和用户变量

    JMeter 函数是特殊值,可以填充任何 Sampler 或测试树中其他元素的字段。
    • 函数调用如下所示 -
    
    ${__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 返回当前测试计划的名称。
    • 有两种函数 -
      • 用户定义的静态值(或变量)
      • 内置函数
    • 用户定义的静态值允许用户定义变量,以便在编译测试树并提交运行时用它们的静态值替换变量。
    • 变量不能嵌套;IE${Var${N}} 不起作用。
    • __V(变量)函数(2.2 之后的版本)可用于执行此操作 - ${__V(Var${N})}。
    • 这种类型的替换在没有函数的情况下是可能的,但不太方便,也不太直观。
  • 在哪里使用函数和变量

    函数和变量可以写入任何测试组件的任何字段。
    以下函数应该在测试计划中运行良好 -
    • intSum
    • longSum
    • machineName
    • BeanShell
    • javaScript
    • jexl
    • random
    • time
    • property functions
    • log functions
    测试计划中使用的函数有一些限制。在处理函数时,JMeter 线程变量还没有完全设置好,因此不会设置作为参数传递的变量名,并且变量引用将不起作用。因此,split()regex()以及变量评估函数将不起作用。该threadNum()函数将无法正常工作,它不会使在测试计划层次感。
  • 引用变量和函数

    • 在测试元素中引用变量是通过用'${' 和'}' 将变量名括起来来完成的。
    • 函数的引用方式相同,但按照惯例,函数名称以“__”开头,以避免与用户值名称冲突。
    • 一些函数使用参数来配置它们,这些参数放在括号中,以逗号分隔。如果函数没有参数,括号可以省略。例如 -
    
    ${__BeanShell(vars.put("name"\,"value"))}
    
    • 或者,您可以将脚本定义为变量,例如在测试计划中 -
    
    SCRIPT     vars.put("name","value")
    
    • 然后可以按如下方式引用脚本 -
    
    ${__BeanShell(${SCRIPT})}
    
  • 函数助手对话框

    函数助手对话框可从 JMeter 的 Options 标签。
    • 使用函数助手,您可以从下拉菜单中选择一个函数,并为其参数赋值。表中的左列提供了参数的简要说明,右列是您为该参数写入值的位置。不同的函数采用不同的参数。
    • 完成此操作后,单击“生成”按钮,将生成相应的字符串,您可以将其复制粘贴到测试计划中的任何位置。
  • 预定义变量

    一些变量是由 JMeter 内部定义的。他们是 -
    • COOKIE_cookiename - 包含 cookie 值。
    • JMeterThread.last_sample_ok - 最后一个样本是否正常 - 真/假。注意 - 这是在运行后处理器和断言后更新的。
    • 开始变量。
  • 预定义属性

    一些内置属性是由 JMeter 定义的。下面列出了这些。为方便起见,START 属性也被复制到具有相同名称的变量中。
    • START.MS - JMeter 开始时间(以毫秒为单位)。
    • START.YMD - JMeter 开始时间为 yyyyMMdd。
    • START.HMS - JMeter 开始时间为 HHmmss。
    • TESTSTART.MS - 以毫秒为单位的测试开始时间。
    请注意,START 变量/属性代表 JMeter 启动时间,而不是测试开始时间。它们主要用于文件名等。