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