20. 函数和变量

JMeter 函数是可以填充测试树中任何采样器或其他元素的字段的特殊值。函数调用如下所示:

${__functionName(var1,var2,var3)}

其中“__functionName”与函数的名称匹配。
括号括住发送给函数的参数,例如${__time(YMD)} 实际参数因函数而异。不需要参数的函数可以省略括号,例如${__threadNum}

如果函数参数包含逗号,那么一定要用“ \ ”转义,否则JMeter会将其视为参数分隔符。例如:

${__time(EEE\, d MMM yyyy)}
如果逗号未转义 - 例如${__javaScript(Math.max(2,5))} - 您将收到如下错误:
ERROR - jmeter.functions.JavaScript: Error processing Javascript: [Math.max(2]
    org.mozilla.javascript.EvaluatorException: missing ) after argument list (<cmd>#1)
 
这是因为字符串“ Math.max(2,5) ”被视为 __javascript 函数的两个参数:
Math.max(25)
其他错误消息是可能的。

变量引用如下:

${VARIABLE}

如果引用了未定义的函数或变量,JMeter 不会报告/记录错误 - 引用原样返回。例如,如果UNDEF未定义为变量,则 ${UNDEF} 的值为$ {UNDEF} 变量、函数(和属性)都区分大小写。 JMeter 在使用前会从变量名中删除空格,例如 ${__Random(1,63, LOTTERY )}将使用变量“ LOTTERY ”而不是“  LOTTERY  ”。

属性与变量不同。变量是线程本地的;属性对所有线程都是通用的,需要使用__P__property函数来引用。
在Windows 路径的变量之前 使用\时,例如C:\test\${test},请确保转义\ 否则 JMeter 不会解释变量,例如: C:\\test\\${test}
或者,只需使用/代替路径分隔符 - 例如C:/test/${test} - Windows JVM 将根据需要转换分隔符。

功能列表,松散地分组为类型。

功能类型姓名评论自从
信息 线程数获取线程号1.X
信息 线程组名获取线程组名4.1
信息 采样器名称获取采样器名称(标签)2.5
信息 机器IP获取本机IP地址2.6
信息 机器名获取本地机器名1.X
信息 时间以各种格式返回当前时间2.2
信息 时移返回各种格式的日期,并添加指定的秒数/分钟数/小时数/天数3.3
信息 日志记录(或显示)消息(并返回值)2.2
信息 登录记录(或显示)一条消息(空返回值)2.2
输入 字符串从文件从文件中读取一行1.9
输入 文件到字符串读取整个文件2.4
输入 CSV读取从 CSV 分隔文件读取1.9
输入 XPath使用 XPath 表达式从文件中读取2.0.3
输入 字符串到文件将字符串写入文件5.2
计算 柜台生成一个递增的数字1.X
格式化 日期时间转换将日期或时间从源格式转换为目标格式4.0
计算 消化生成摘要(SHA-1、SHA-256、MD5...)4.0
计算 整数添加整数1.8.1
计算 长和添加长数字2.3.2
计算 随机的生成一个随机数1.9
计算 随机日期在特定日期范围内生成随机日期3.3
计算 RandomFromMultipleVars从由|分隔的一组变量的值中提取一个元素3.1
计算 随机字符串生成随机字符串2.6
计算 UUID生成随机类型 4 UUID2.9
脚本 时髦的运行 Apache Groovy 脚本3.1
脚本 豆壳运行 BeanShell 脚本1.X
脚本 脚本处理 JavaScript (Nashorn)1.9
脚本 jexl2评估 Commons Jexl2 表达式jexl2(2.1.1)
脚本 jexl3评估 Commons Jexl3 表达式jexl3 (3.0)
特性 isPropDefined 测试属性是否存在4.0
特性 财产 读取属性2.0
特性 读取属性(速记方法)2.0
特性 设置属性设置 JMeter 属性2.1
变量 分裂将字符串拆分为变量2.0.2
变量 评估计算变量表达式2.3.1
变量 评估变量计算存储在变量中的表达式2.3.1
特性 isVarDefined 测试变量是否存在4.0
变量 评估变量名2.3RC3
细绳 字符从数字列表中生成 Unicode 字符值2.3.3
细绳 变更案例改变大小写遵循不同的模式4.0
细绳 转义HTML使用 HTML 编码对字符串进行编码2.3.3
细绳 escapeOroRegexpChars引用 ORO 正则表达式使用的元字符2.9
细绳 逃逸Xml使用 XML 编码对字符串进行编码3.2
细绳 正则表达式函数使用正则表达式解析先前的响应1.X
细绳 逃逸处理包含 Java 转义的字符串(例如 \n & \t)2.3.3
细绳 转义HTML解码 HTML 编码的字符串2.3.3
细绳 网址解码解码 application/x-www-form-urlencoded 字符串2.10
细绳 网址代码将字符串编码为 application/x-www-form-urlencoded 字符串2.10
细绳 测试计划名称返回当前测试计划的名称2.6

20.1 函数可以做什么

有两种函数:用户定义的静态值(或变量)和内置函数。
用户定义的静态值允许用户定义在编译测试树并提交运行时用它们的静态值替换的变量。此替换在测试运行开始时发生一次。这可用于替换所有 HTTP 请求的 DOMAIN 字段,例如 - 使更改测试以针对具有相同测试的不同服务器变得简单。

请注意,变量当前不能嵌套;即${Var${N}}不起作用。__V (变量)函数可用于执行此操作:$ {__V(Var${N})}。您也可以使用${__BeanShell(vars.get("Var${N}")}

这种类型的替换在没有功能的情况下是可能的,但不太方便且不太直观。它要求用户创建默认配置元素来填充采样器的空白值。变量允许仅替换任何给定值的一部分,而不仅仅是填充空白值。

使用内置函数,用户可以在运行时根据以前的响应数据、函数所在的线程、时间和许多其他来源计算新值。这些值是在整个测试过程中为每个请求生成的。

函数在线程之间共享。测试计划中每次出现的函数调用都由单独的函数实例处理。

20.2 函数和变量可以用在什么地方?

函数和变量可以写入任何测试组件的任何字段(除了 TestPlan - 见下文)。某些字段不允许使用随机字符串,因为它们需要数字,因此不会接受函数。但是,大多数字段都允许使用函数。

测试计划中使用的功能有一些限制。JMeter线程变量在处理函数的时候还没有完全设置好,所以作为参数传递的变量名不会设置,变量引用也不起作用,所以split()regex()以及变量求值函数都不会不工作。threadNum ()函数不起作用(并且在测试计划级别没有意义)。以下功能在测试计划上应该可以正常工作:

  • 整数
  • 长和
  • 机器名
  • 豆壳
  • 时髦的
  • 脚本
  • jexl2/jexl3
  • 随机的
  • 时间
  • 属性函数
  • 日志功能

配置元素由单独的线程处理。因此,诸如__threadNum之类的函数在用户定义变量等元素中无法正常工作。另请注意,UDV 元素中定义的变量在处理完该元素后才可用。

在 SQL 代码(等)中使用变量/函数引用时,请记住为文本字符串包括任何必要的引号,即使用
SELECT item from table where name='${VAR}'
不是
SELECT item from table where name=${VAR}
(除非VAR本身包含引号)

20.3 如何引用变量和函数

引用测试元素中的变量是通过用' ${ '和' } '将变量名括起来来完成的。

函数的引用方式相同,但按照惯例,函数的名称以“ __ ”开头,以避免与用户值名称*冲突。有些函数需要参数来配置它们,这些参数放在括号中,以逗号分隔。如果函数没有参数,括号可以省略。

本身包含逗号的参数值应根据需要进行转义。如果您需要在参数值中包含逗号,请将其转义,如下所示:' \, '。 例如,这适用于脚本函数 - Javascript、Beanshell、Jexl、groovy - 有必要在脚本方法调用中转义任何可能需要的逗号 - 例如

${__BeanShell(vars.put("name"\,"value"))}

或者,您可以将脚本定义为变量,例如在测试计划中:

SCRIPT          vars.put("name","value")
然后可以按如下方式引用该脚本:
${__BeanShell(${SCRIPT})}
不需要在SCRIPT变量中转义逗号,因为在将变量替换为其值之前会解析函数调用。这与 JSR223 或 BeanShell 采样器配合使用效果很好,因为它们可用于测试 Javascript、Jexl 和 BeanShell 脚本。

函数可以引用变量和其他函数,例如 ${__XPath(${__P(xpath.file),${XPATH})} 将使用属性“ xpath.file ”作为文件名,变量XPATH的内容为要搜索的表达式。

JMeter 提供了一个工具来帮助您为各种内置函数构建函数调用,然后您可以复制粘贴。它不会自动为您转义值,因为函数可以是其他函数的参数,并且您应该只将您想要作为文字的值转义。

如果字符串包含反斜杠(' \ ')并且还包含函数或变量引用,则如果反斜杠出现在' $ '或' , '或' \ '之前,则将删除反斜杠。此行为对于允许包含逗号或字符串${的嵌套函数是必要的。如果字符串不包含函数或变量引用,则不会删除 ' $ ' 或 ' ' 或 ' \ '之前的反斜杠。

可以使用__logn()函数报告变量或函数的值。定义变量后,__logn()函数引用可以在测试计划中的任何地方使用。或者,Java 请求采样器可用于创建包含变量引用的示例;输出将显示在适当的侦听器中。请注意,有一个调试采样器 可用于在树视图侦听器中显示变量的值等。

*如果你定义了一个与内置函数同名的用户定义的静态变量,你的静态变量将覆盖内置函数。

20.4 函数助手对话框

函数助手对话框可从 JMeter 的工具菜单中获得。

函数助手对话框
函数助手对话框

使用函数助手,您可以从下拉列表中选择一个函数,并为其参数赋值。表中的左列提供了参数的简要描述,右列是您为该参数写入值的位置。不同的函数采用不同的参数。

完成此操作后,单击“生成”按钮,并生成适当的字符串供您复制粘贴到您喜欢的任何地方的测试计划中。

20.5 功能

__正则表达式函数

Regex 函数用于使用任何正则表达式(由用户提供)解析先前的响应(或变量的值)。该函数返回填充了变量值的模板字符串。

__regexFunction可以存储值以供将来使用。在第六个参数中,您可以指定一个引用名称。执行此函数后,稍后可以使用用户定义值的语法检索相同的值。例如,如果您输入“ refName ”作为第六个参数,您将能够使用:

  • ${refName}引用此函数解析的第二个参数(“替换字符串的模板”)的计算结果
  • ${refName_g0}引用此函数解析的整个匹配项。
  • ${refName_g1}引用此函数解析的第一个组。
  • ${refName_g#}引用此函数解析的第 n组。
  • ${refName_matchNr}引用此函数找到的组数。
如果使用分布式测试,请确保切换模式(请参阅jmeter.properties),以免它不是剥离模式,请参阅 错误 56376

参数

属性
描述
必需的
第一个论点
第一个参数是应用于响应数据的正则表达式。它将抓取所有匹配项。您希望在模板字符串中使用此表达式的任何部分,请务必用括号括起来。示例: <a href="(.*)">。这将获取链接的值并将其存储为第一组(只有 1 组)。另一个例子:<input type="hidden" name="(.*)" value="(.*)">。这将获取名称作为第一组,并将值作为第二组。这些值可以在您的模板字符串中使用
是的
第二个论点
这是将在运行时替换函数的模板字符串。要引用正则表达式中捕获的组,请使用语法: $[group_number]$。即:$1$$2$。您的模板可以是任何字符串。
是的
第三个论点
第三个参数告诉 JMeter 使用哪个匹配。您的正则表达式可能会找到许多匹配项。你有四个选择:
  • 一个整数 - 告诉 JMeter 使用该匹配。' 1 ' 表示找到的第一个匹配项,' 2 ' 表示第二个匹配项,依此类推
  • RAND - 告诉 JMeter 随机选择一个匹配项。
  • ALL - 告诉 JMeter 使用所有匹配项,并为每个匹配项创建一个模板字符串,然后将它们全部附加在一起。这个选项很少使用。
  • 一个介于 0 和 1 之间的浮点数 - 告诉 JMeter 使用以下公式找到第 X匹配项:(number_of_matches_found * float_number) 四舍五入到最接近的整数。
不,默认=1
第四个论点
如果为上述参数值选择了“ ALL ”,则该参数将插入到模板值的每个附加副本之间。
第五论点
如果未找到匹配项,则返回默认值
第六个论点
用于重用此函数解析的值的引用名称。
存储的值是${refName}(替换模板字符串)和${refName_g#},其中“ # ”是正则表达式中的组号(“ 0 ”可用于引用整个匹配项)。
第七个论点
输入变量名。如果指定,则将变量的值用作输入,而不是使用先前的样本结果。
^

__计数器

计数器每次调用时都会生成一个新数字,从 1 开始,每次递增 +1。计数器可以配置为将每个模拟用户的值分开,或者为所有用户使用相同的计数器。如果每个用户的值分别递增,这就像计算测试计划的迭代次数。全局计数器就像计算该请求运行了多少次。

计数器使用一个整数变量来保存计数,因此它的最大值为 2,147,483,647。

计数器函数实例是完全独立的。全局计数器 - “ FALSE ” - 由每个计数器实例单独维护。

同一迭代中的多个__counter函数调用不会进一步增加该值。
如果您想要为每个样本增加一个计数,请使用预处理器中的函数,例如User Parameters

参数

属性
描述
必需的
第一个论点
如果您希望每个模拟用户的计数器保持独立并与其他用户分开,则为 TRUE 。全局计数器为FALSE
是的
第二个论点
用于重用此函数创建的值的引用名称。
存储值的格式为 ${refName}。这允许您保留一个计数器并在多个位置引用其值。
^

__threadNum

线程号函数只是返回当前正在执行的线程号。这些数字仅相对于它们的 ThreadGroup 是局部唯一的,这意味着从这个函数的角度来看,一个线程组中的线程 #1 与另一个线程组中的线程 #1 无法区分。

该函数返回一个介于 1 和最大运行线程数之间的数字。请注意,如果您将 JSR223 代码与JMeterContext对象(ctx变量)一起使用,则以下代码将返回一个介于零和(最大运行线程数减一)之间的数字
ctx.getThreadNum()

此函数没有参数。

使用示例:

${__threadNum}
返回一个介于 1 和包含线程组中配置的最大运行线程数之间的数字

此功能不适用于任何配置元素(例如用户定义的变量),因为它们是从单独的线程运行的。在测试计划中使用它也没有意义。
^

__threadGroupName

线程组名称函数只返回正在执行的线程组的名称。

此函数没有参数。

使用示例:

${__threadGroupName}

此功能不适用于任何配置元素(例如用户定义的变量),因为它们是从单独的线程运行的。在测试计划中使用它也没有意义。
^

__intSum

intSum 函数可用于计算两个或多个整数值的总和。

引用名称是可选的,但它不能是有效的整数。

参数

属性
描述
必需的
第一个论点
第一个 int 值。
是的
第二个论点
第二个 int 值。
是的
第 n 个参数
第 nint 值。
最后一个论点
用于重用此函数计算的值的引用名称。如果指定,引用名称必须至少包含一个非数字字符,否则它将被视为要添加的另一个 int 值。

例子:

${__intSum(2,5,MYVAR)}
将返回 7 (2+5) 并将结果存储在 MYVAR 变量中。所以${MYVAR}将等于 7。
${__intSum(2,5,7)}
将返回 14 (2+5+7) 并将结果存储在 MYVAR 变量中。
${__intSum(1,2,5,${MYVAR})}
如果 MYVAR 值等于 8,将返回 16, 1+2+5+${MYVAR})

^

__longSum

longSum 函数可用于计算两个或多个 long 值的总和,只要您知道您的值不在 -2147483648 到 2147483647 的区间内,请使用它而不是 __intSum。

参数

属性
描述
必需的
第一个论点
第一个长值。
是的
第二个论点
第二个长值。
是的
第 n 个参数
第 nlong 值。
最后一个论点
用于重用此函数计算的值的引用名称。如果指定,引用名称必须包含至少一个非数字字符,否则将被视为要添加的另一个长值。

例子:

${__longSum(2,5,MYVAR)}
将返回 7 (2+5) 并将结果存储在 MYVAR 变量中。所以${MYVAR}将等于 7。
${__longSum(2,5,7)}
将返回 14 (2+5+7) 并将结果存储在 MYVAR 变量中。
${__longSum(1,2,5,${MYVAR})}
如果 MYVAR 值等于 8,将返回 16, 1+2+5+${MYVAR})

^

__StringFromFile

StringFromFile 函数可用于从文本文件中读取字符串。这对于运行需要大量可变数据的测试很有用。例如,在测试银行应用程序时,可能需要 100 或 1000 个不同的帐号。

另请参阅 可能更易于使用的CSV 数据集配置测试元素。但是,目前不支持多个输入文件。

每次调用它都会从文件中读取下一行。所有线程共享同一个实例,因此不同的线程将得到不同的行。当到达文件末尾时,它将重新从头开始读取,除非已达到最大循环计数。如果测试脚本中有多个对该函数的引用,则每个引用都将独立打开文件,即使文件名相同。[如果要在其他地方再次使用该值,请为每个函数调用使用不同的变量名。]

函数实例在线程之间共享,并且文件由恰好需要下一行输入的任何线程(重新)打开,因此使用threadNumber作为文件名的一部分将导致不可预测的行为。

如果打开或读取文件发生错误,则函数返回字符串“ **ERR**

参数

属性
描述
必需的
文件名
文件名的路径。(路径可以相对于 JMeter 启动目录)如果使用可选的序列号,路径名应该适合传递给 DecimalFormat。请参阅下面的示例。
是的
变量的名称
引用名称 - refName - 用于重用此函数创建的值。存储值的格式为 ${refName}。默认为“ StringFromFile_ ”。
起始序号
初始序列号(如果省略,则将结束序列号视为循环计数)
结束序号
最终序号(如果省略,序号可以无限增加)

打开或重新打开文件时解析文件名参数。

每次执行函数时都会解析引用名称参数(如果提供)。

使用序列号:

使用可选序列号时,路径名用作java.text.DecimalFormat的格式字符串。当前序列号作为唯一参数传入。如果未指定可选的起始编号,则按原样使用路径名。有用的格式化序列是:

#
插入数字,没有前导零或空格
000
如有必要,将压缩后的数字插入前导零的三位数字
格式字符串的使用
以下是一些格式字符串以及它们将生成的相应序列。
pin#'.'dat
将生成不带前导零的数字并将点按字面意思
视为 pin1.dat、...、pin9.datpin10.dat、...、pin9999.dat
pin000'.'dat
将在保留点的同时生成前导零。当数字开始有更多数字时,该格式建议的这三个数字,序列将使用更多数字,如
pin001.dat、... pin099.dat、...、pin999.dat、...、pin9999.dat
pin'.'dat#
将在保留点的同时附加不带前导零的数字并生成
pin.dat1 , ..., pin.dat9 , ..., pin.dat999

如果需要的数字多于格式化字符,则数字将根据需要进行扩展。
为防止格式字符被解释,请将其括在单引号中。请注意,“ . ”是一个格式化字符,必须用单引号括起来 (尽管#.000.在小数点也是“ . ”的语言环境中按预期工作)
在其他语言环境中(例如fr),小数点是“ , ”——这意味着“ #. ”变成了“ nnn, ”。有关完整详细信息,
请参阅DecimalFormat的文档。
如果路径名不包含任何特殊格式字符,则将当前序号附加到名称后,否则将根据格式说明插入序号。
如果省略了开始序号,而指定了结束序号,则序号被解释为循环计数,并且文件将最多使用“ end ”次。在这种情况下,文件名未格式化。
${__StringFromFile(PIN#'.'DAT,,1,2)} - 读取PIN1.DAT , PIN2.DAT
${__StringFromFile(PIN.DAT,,,2)} - 读取PIN.DAT两次
注意 " . " 在上面的PIN.DAT中应该被引用。在这种情况下,起始编号被省略,因此文件名完全按原样使用。

^

__机器名称

machineName 函数返回本地主机名。这使用 Java 方法InetAddress.getLocalHost()并将其传递给getHostName()

参数

属性
描述
必需的
变量的名称
用于重用此函数计算的值的引用名称。

例子:

${__machineName()}
将返回机器的主机名
${__machineName}
将返回机器的主机名

^

__machineIP

machineIP 函数返回本地 IP 地址。这使用 Java 方法InetAddress.getLocalHost()并将其传递给getHostAddress()

参数

属性
描述
必需的
变量的名称
用于重用此函数计算的值的引用名称。

例子:

${__machineIP()}
将返回机器的 IP 地址
${__machineIP}
将返回机器的 IP 地址

^

__javaScript

javaScript 函数执行一段 JavaScript(不是 Java!)代码并返回其值

JMeter Javascript 函数调用一个独立的 JavaScript 解释器。Javascript用作脚本语言,因此您可以进行计算等。

javaScript 不是用于 JMeter 性能的最佳脚本语言。如果您的计划需要大量线程,建议使用__jexl3__groovy函数。
对于 Nashorn 引擎,请参阅Java 平台标准版 Nashorn 用户指南
对于 Rhino 引擎,请参阅Mozilla Rhino 概述

以下变量可用于脚本:

Rhinoscript 允许通过其 Packages 对象访问静态方法。请参阅脚本 Java文档。例如,可以访问 JMeterContextService 静态方法: Java.type("org.apache.jmeter.threads.JMeterContextService").getTotalThreads()

JMeter 不是浏览器,不会解释下载页面中的 JavaScript。

参数

属性
描述
必需的
表达
要执行的 JavaScript 表达式。例如:
  • new Date() - 返回当前日期和时间
  • Math.floor(Math.random()*(${maxRandom}+1)) - 0和变量maxRandom 之间的随机数
  • ${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)) - 变量minRandommaxRandom之间的随机数
  • "${VAR}"=="abcd"
是的
变量的名称
用于重用此函数计算的值的引用名称。
请记住为文本字符串和 JMeter 变量添加任何必要的引号。另外,如果表达式有逗号,请确保将它们转义。例如在:
${__javaScript('${sp}'.slice(7\,99999))}
7 后的逗号被转义。

例子:

${__javaScript(new Date())}
将于2016 年 1 月 9 日星期六 16:22:15 GMT+0100 (CET)返回
${__javaScript(new Date(),MYDATE)}
将返回Sat Jan 09 2016 16:22:15 GMT+0100 (CET)并将其存储在变量MYDATE下
${__javaScript(Math.floor(Math.random()*(${maxRandom}+1)),MYRESULT)}
将使用 maxRandom 变量,返回一个介于 0 和 maxRandom 之间的随机值并将其存储在 MYRESULT
${__javaScript(${minRandom}+Math.floor(Math.random()*(${maxRandom}-${minRandom}+1)),MYRESULT)}
将使用maxRandomminRandom变量,返回maxRandomminRandom之间的随机值并将其存储在变量MYRESULT下
${__javaScript("${VAR}"=="abcd",MYRESULT)}
VAR变量的值与abcd进行比较,返回truefalse并将结果存储在 MYRESULT

^

__随机

random 函数返回一个介于给定最小值和最大值之间的随机数。

参数

属性
描述
必需的
最小值
一个号码
是的
最大值
更大的数字
是的
变量的名称
用于重用此函数计算的值的引用名称。

例子:

${__Random(0,10)}
将返回 0 到 10 之间的随机数
${__Random(0,10, MYVAR)}
将返回 0 到 10 之间的随机数并将其存储在MYVAR中。${MYVAR}将包含随机数

^

__随机日期

RandomDate 函数返回一个介于给定开始日期和结束日期值之间的随机日期。

参数

属性
描述
必需的
时间格式
DateTimeFormatter 的格式字符串(默认yyyy-MM-dd
开始日期
开始日期,默认是现在
结束日期
结束日期
是的
用于格式的语言环境
语言环境的字符串格式。语言代码必须是小写的。国家代码必须是大写的。分隔符必须是下划线,例如en_EN。请参阅http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html。如果省略,默认情况下该函数使用 Apache JMeter 语言环境之一。
变量名
要设置的变量的名称。

例子:

${__RandomDate(,,2050-07-08,,)}
将返回从现在2050-07-08之间的随机日期。例如2039-06-21
${__RandomDate(dd MM yyyy,,08 07 2050,,)}
将返回具有自定义格式的随机日期,例如04 03 2034

^

__随机字符串

RandomString 函数使用要使用的字符中的字符返回长度的随机字符串。

参数

属性
描述
必需的
长度
生成的字符串的数字长度
是的
使用的字符
用于生成字符串的字符
变量的名称
用于重用此函数计算的值的引用名称。

例子:

${__RandomString(5)}
将返回一个 5 个字符的随机字符串,该字符串是否可读
${__RandomString(10,abcdefg)}
将返回从abcdefg集合中挑选的 10 个字符的随机字符串,例如cdbgdbeebdadbfeggfad,...
${__RandomString(6,a12zeczclk, MYVAR)}
将返回从a12zeczclk集合中挑选的 6 个字符的随机字符串,并将结果存储在MYVAR中,MYVAR将包含类似2z22akz11kce的字符串,...

^

__RandomFromMultipleVars

RandomFromMultipleVars 函数根据Source Variables提供的变量值返回一个随机值。

变量可以是简单的或多值的,因为它们可以由以下提取器生成: 多值变量是在您为Match Numbers设置-1时提取的变量。这导致创建名为varName_matchNr的匹配编号变量,并为每个值创建变量varName_n,其中 n = 1、2、3 等。

参数

属性
描述
必需的
源变量
由|分隔的变量名 包含将用作随机计算输入的值
是的
变量的名称
用于重用此函数计算的值的引用名称。

例子:

${__RandomFromMultipleVars(val)}
将根据变量 val 的内容返回一个随机字符串,同时考虑它们是否为多值
${__RandomFromMultipleVars(val1|val2)}
将根据变量 val1 和 val2 的内容返回一个随机字符串,同时考虑它们是否为多值
${__RandomFromMultipleVars(val1|val2, MYVAR)}
将根据变量 val1 和 val2 的内容返回一个随机字符串,同时考虑它们是否为多值,并将结果存储在MYVAR

^

__UUID

UUID 函数返回一个伪随机类型 4 通用唯一标识符 (UUID)。

参数

属性
描述
必需的

例子:

${__UUID()}
将返回此格式的 UUID:c69e0dd1-ac6b-4f2b-8d59-5d4e8743eecd

^

__CSVRead

CSVRead 函数从 CSV 文件中返回一个字符串 (cf StringFromFile )

注意:JMeter 支持多个文件名。

在大多数情况下,较新的 CSV 数据集配置元素 更易于使用。

当第一次遇到文件名时,文件被打开并读入一个内部数组。如果检测到空行,则将其视为文件结尾 - 这允许使用尾随注释。

对相同文件名的所有后续引用都使用相同的内部数组。注意文件名大小写对函数很重要,即使操作系统不关心,所以CSVRead(abc.txt,0)CSVRead(aBc.txt,0)将引用不同的内部数组。

*ALIAS功能允许多次打开同一个文件,也允许使用更短的文件名 。

每个线程都有自己的内部指针,指向文件数组中的当前行。当一个线程第一次引用该文件时,它将被分配到数组中的下一个空闲行,因此每个线程将访问与所有其他线程不同的行。[除非线程数多于数组中的行数。]

默认情况下,该函数在每个逗号处拆分行。如果要输入包含逗号的列,则需要通过设置属性将分隔符更改为不出现在任何列数据中的字符:csvread.delimiter

参数

属性
描述
必需的
文件名
要从中读取的文件(或*ALIAS )
是的
列号
文件中的列号。 0 = 第一列,1 = 第二列,以此类推。“下一个” - 转到文件的下一行。 *ALIAS - 打开一个文件并将其分配给别名
是的

例如,您可以如下设置一些变量:

  • COL1a ${__CSVRead(random.txt,0)}
  • COL2a ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
  • COL1b ${__CSVRead(random.txt,0)}
  • COL2b ${__CSVRead(random.txt,1)}${__CSVRead(random.txt,next)}
这将从一行读取两列,从下一个可用行读取两列。如果所有变量都定义在同一个用户参数预处理器上,那么这些行将是连续的。否则,不同的线程可能会抓取下一行。

该功能不适用于大文件,因为整个文件都存储在内存中。对于较大的文件,请使用CSV 数据集配置元素StringFromFile
^

__属性

属性函数返回 JMeter 属性的值。如果找不到属性值,并且没有提供默认值,则返回属性名称。提供默认值时,无需提供函数名称 - 参数可以设置为 null,它将被忽略。

例如:

  • ${__property(user.dir)} - user.dir的返回值
  • ${__property(user.dir,UDIR)} - user.dir的返回值并保存在UDIR
  • ${__property(abcd,ABCD,atod)} - 属性abcd的返回值(或“ atod ”,如果未定义)并保存在ABCD
  • ${__property(abcd,,atod)} - 属性abcd的返回值(或“ atod ”,如果未定义)但不保存它

参数

属性
描述
必需的
属性名称
要检索的属性名称。
是的
变量的名称
用于重用此函数计算的值的引用名称。
默认值
属性的默认值。
^

__P

这是一个简化的属性函数,旨在与命令行上定义的属性一起使用。与__property函数不同,没有将值保存在变量中的选项,如果没有提供默认值,则假定为 1。选择 1 的值是因为它对循环等常见测试变量有效,线程数,斜升等。

例如:

定义属性值:

jmeter -Jgroup1.threads=7 -Jhostname1=www.realhost.edu
获取值:
${__P(group1.threads)} - 返回group1.threads的值
${__P(group1.loops)} - 返回group1.loops 的值
${__P(hostname,www.dummy.org) } -如果未定义 ,则返回属性hostnamewww.dummy.org
在上面的示例中,第一个函数调用将返回7,第二个函数调用将返回1,最后一个将返回www.dummy.org (除非这些属性已定义别处!)

参数

属性
描述
必需的
属性名称
要检索的属性名称。
是的
默认值
属性的默认值。如果省略,默认设置为“ 1 ”。
^

__log

log 函数记录一条消息,并返回其输入字符串

参数

属性
描述
必需的
要记录的字符串
一个字符串
是的
日志级别
OUTERRDEBUGINFO(默认),WARNERROR
可抛出的文本
如果非空,则创建一个 Throwable 传递给记录器
评论
如果存在,则显示在字符串中。用于识别正在记录的内容。

OUTERR日志级别名称分别用于将输出定向到System.outSystem.err。在这种情况下,输出总是被打印出来——它不依赖于当前的日志设置。

${__log(消息)}
写入日志文件为“ ......线程名称:消息
${__log(消息,输出)}
写入控制台窗口
${__log(${VAR},,,VAR=)}
写入日志文件为“ ……线程名称 VAR=value
^

__logn

logn 函数记录一条消息,并返回空字符串

参数

属性
描述
必需的
要记录的字符串
一个字符串
是的
日志级别
OUTERRDEBUGINFO(默认),WARNERROR
可抛出的文本
如果非空,则创建一个 Throwable 传递给记录器

OUTERR日志级别名称分别用于将输出定向到System.outSystem.err。在这种情况下,输出总是被打印出来——它不依赖于当前的日志设置。

${__logn(VAR1=${VAR1},OUT)}
将变量的值写入控制台窗口
^

__BeanShell

BeanShell 函数评估传递给它的脚本,并返回结果。

为了提高性能,最好使用__groovy函数

有关使用 BeanShell 的完整详细信息,请参阅 BeanShell 网站http://www.beanshell.org/

请注意,不同的解释器用于测试脚本中函数的每个独立出现,但相同的解释器用于后续调用。这意味着变量在对函数的调用中持续存在。

可以从多个线程调用函数的单个实例。但是函数execute()方法是同步的。

如果定义了属性“ beanshell.function.init ”,它将作为源文件的名称传递给解释器。这可用于定义常用方法和变量。bin 目录中有一个示例初始化文件:BeanShellFunction.bshrc

在执行脚本之前设置以下变量:

(*) 表示这是在处理初始化文件(如果有)之前设置的。其他变量因调用而异。

参数

属性
描述
必需的
BeanShell 脚本
beanshell 脚本(不是文件名)
是的
变量名
用于重用此函数计算的值的引用名称。

例子:

${__BeanShell(123*456)}
返回56088
${__BeanShell(source("function.bsh"))}
处理function.bsh中的脚本

请记住为文本字符串和表示文本字符串的 JMeter 变量包括任何必要的引号。
^

__groovy

__groovy函数评估传递给它 的Apache Groovy脚本,并返回结果。

如果定义了属性“ groovy.utilities ”,它将由 ScriptEngine 加载。这可用于定义常用方法和变量。bin目录中有一个示例初始化文件:utility.groovy

在执行脚本之前设置以下变量:

(*) 表示这是在处理初始化文件(如果有)之前设置的。其他变量因调用而异。

使用此函数时,请使用上面定义的变量,而不是使用字符串替换来访问脚本中的变量。遵循此模式将通过确保可以缓存 Groovy 来确保您的测试是高性能的。

例如,不要执行以下操作:

${__groovy("${myVar}".substring(0\,2))}

想象一下,变量 myVar 随每次交易而变化,上面的 Groovy 无法缓存,因为脚本每次都在变化。

而是执行以下操作,可以缓存:

${__groovy(vars.get("myVar").substring(0\,2))}

参数

属性
描述
必需的
要评估的表达式
Apache Groovy 脚本(不是文件名)
本身包含逗号的参数值应根据需要进行转义。如果您需要在参数值中包含逗号,请将其转义为:' \, '
是的
变量名
用于重用此函数计算的值的引用名称。

例子:

${__groovy(123*456)}
返回56088
${__groovy(vars.get("myVar").substring(0\,2))}
如果 var 的值为JMeter,它将在运行String.substring(0,2)时返回JM。请注意,已转义为\,

请记住为文本字符串和表示文本字符串的 JMeter 变量包括任何必要的引号。
^

__split

split 函数根据分隔符将传递给它的字符串拆分,并返回原始字符串。如果任何分隔符相邻,则返回“ ”作为值。拆分字符串在变量${VAR_1}${VAR_2}等中返回。变量的计数在${VAR_n}中返回。尾随分隔符被视为缺失变量,并返回“ ”。此外,为了让它更好地与 ForEach 控制器一起工作, __split现在删除第一个未使用的变量,以防它是由先前的拆分设置的。

示例: 在测试计划中
定义VAR =" a||c| "。
${__split(${VAR},VAR,|)}

这将返回VAR的内容,即“ a||c| ”并设置以下变量:
VAR_n = 4
VAR_1 = a
VAR_2 = ?
VAR_3 = c
VAR_4 = ?
VAR_5 =

参数

属性
描述
必需的
要拆分的字符串
分隔字符串,例如“ a|b|c
是的
变量名
用于重用此函数计算的值的引用名称。
是的
分隔符
分隔符,例如| . 如果省略,使用 ,。请注意需要将 , 指定为\,
^

__XPath

XPath 函数读取一个 XML 文件并匹配 XPath。每次调用该函数时,都会返回下一个匹配项。在文件末尾,它将环绕到开头。如果没有节点匹配,则函数将返回空字符串,并将警告消息写入 JMeter 日志文件。

请注意,整个 NodeList 都保存在内存中。

例子:
${__XPath(/path/to/build.xml, //target/@name)}
这将匹配build.xml中的所有目标并返回下一个 name 属性的内容

参数

属性
描述
必需的
要解析的 XML 文件
要解析的 XML 文件
是的
XPath
用于匹配 XML 文件中的节点的 XPath 表达式
是的
^

__setProperty

setProperty 函数设置 JMeter 属性的值。函数的默认返回值是空字符串,因此函数调用可以在函数有效的任何地方使用。

可以通过将可选的第三个参数设置为“ true ”来返回原始值。

属性对 JMeter 来说是全局的,因此可以用来在线程和线程组之间进行通信

参数

属性
描述
必需的
属性名称
要设置的属性名称。
是的
适当的价值
属性的值。
是的
真假
是否应该返回原始值?
^

__时间

time 函数以各种格式返回当前时间。

参数

属性
描述
必需的
格式
要传递给SimpleDateFormat的格式。该函数支持各种速记别名,见下文。如果省略,则该函数返回自纪元以来的当前时间(以毫秒为单位)。
变量名
要设置的变量的名称。

如果省略格式字符串,则函数返回自纪元以来的当前时间(以毫秒为单位)。如果格式匹配“ /ddd ”(其中ddd是十进制数字),则该函数返回当前时间(以毫秒为单位)除以ddd的值。例如,“ /1000 ”返回自纪元以来的当前时间(以秒为单位)。否则,将当前时间传递给 SimpleDateFormat。提供了以下速记别名:

  • YMD = yyyyMMdd
  • HMS = HHmmss
  • YMDHMS = yyyyMMdd-HHmmss
  • USER1 = JMeter 属性time.USER1中的任何内容
  • USER2 = JMeter 属性time.USER2中的任何内容

可以通过设置适当的 JMeter 属性来更改默认值,例如 time.YMD=yyMMdd

${__time(dd/MM/yyyy,)}
如果在 2018 年 1 月 21 日运行, 将返回21/01/2018

${__time(YMD,)}
如果在 2018 年 1 月 21 日运行, 将返回20180121

${__time()}
将以毫秒为单位返回时间1516540541624

^

__jexl2

jexl 函数返回计算 Commons JEXL 表达式的结果。有关 JEXL 表达式的更多信息,请参阅下面的链接。

__jexl2函数使用 Commons JEXL 2

参数

属性
描述
必需的
表达
要评估的表达式。例如,6*(5+2)
是的
变量名
要设置的变量的名称。

以下变量可用于脚本:

Jexl 还可以创建类并在其上调用方法,例如:

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
请注意,网站上的 Jexl 文档错误地建议“ div ”进行整数除法。实际上“ div ”和“ / ”都执行正常的除法。可以得到如下相同的效果:
i= 5 / 2;
i.intValue(); // or use i.longValue()

JMeter 允许表达式包含多个语句。
^

__jexl3

jexl 函数返回计算 Commons JEXL 表达式的结果。有关 JEXL 表达式的更多信息,请参阅下面的链接。

__jexl3函数使用 Commons JEXL 3

参数

属性
描述
必需的
表达
要评估的表达式。例如,6*(5+2)
是的
变量名
要设置的变量的名称。

以下变量可用于脚本:

Jexl 还可以创建类并在其上调用方法,例如:

Systemclass=log.class.forName("java.lang.System");
now=Systemclass.currentTimeMillis();
请注意,网站上的 Jexl 文档错误地建议“ div ”进行整数除法。实际上“ div ”和“ / ”都执行正常的除法。可以得到如下相同的效果:
i= 5 / 2;
i.intValue(); // or use i.longValue()

JMeter 允许表达式包含多个语句。
^

__V

V(变量)函数返回对变量名表达式求值的结果。这可用于评估嵌套变量引用(当前不支持)。

例如,如果有变量A1A2N = 1

  • ${A1} - 工作正常
  • ${A${N}} - 不起作用(嵌套变量引用)
  • ${__V(A${N})} - 工作正常。A${N}变为A1__V函数返回A1的值

参数

属性
描述
必需的
变量的名称
要评估的变量。
是的
默认值
未找到变量时的默认值,如果为空且未找到变量,则函数返回变量名称
^

__evalVar

evalVar 函数返回计算存储在变量中的表达式的结果。

这允许人们从文件中读取字符串,并处理其中的任何变量引用。例如,如果变量“ query ”包含“ select ${column} from ${table} ”并且“ column ”和“ table ”包含“ name ”和“ customers ”,则${__evalVar(query)} 将评估为“从客户中选择名称”。

参数

属性
描述
必需的
变量的名称
要评估的变量。
是的
^

__eval

eval 函数返回计算字符串表达式的结果。

这允许在存储在变量中的字符串中插入变量和函数引用。例如,给定以下变量:

  • 姓名=史密斯
  • =年龄
  • =生日
  • SQL = select ${column} from ${table} where name='${name}'
然后${__eval(${SQL})}将评估为“从 name='Smith' 的生日中选择年龄”。

这可以与 CSV 数据集结合使用,例如 SQL 语句和值都在数据文件中定义。

参数

属性
描述
必需的
变量的名称
要评估的变量。
是的
^

__char

char 函数将计算数字列表的结果作为 Unicode 字符返回。另请参见下面的__unescape()

这允许将任意字符值添加到字段中。

参数

属性
描述
必需的
Unicode 字符编号(十进制或 0xhex)
要转换为 Unicode 字符 的十进制数(或十六进制数,如果以0x为前缀,或八进制数,如果以0为前缀)。
是的

示例:
${__char(13,10)} = ${__char(0xD,0xA)} = ${__char(015,012)} = CRLF
${__char(165)} = ¥(日元)

^

__unescape

unescape 函数返回对 Java 转义字符串求值的结果。另请参见上面的__char()

这允许人们向字段添加字符,否则这些字符很难通过 GUI 定义(或不​​可能)。

参数

属性
描述
必需的
取消转义的字符串
要转义的字符串。
是的

示例:
${__unescape(\r\n)} = CRLF
${__unescape(1\t2)} = 1 [tab] 2

^

__unescapeHtml

将包含 HTML 实体转义的字符串转义为包含与转义对应的实际 Unicode 字符的字符串的函数。支持 HTML 4.0 实体。

例如,字符串

${__unescapeHtml(&lt;Fran&ccedil;ais&gt;)}
将返回<Français>

如果一个实体无法识别,则将其单独放置,并逐字插入结果字符串中。例如${__unescapeHtml(>&zzzz;x)}将返回>&zzzz;x

使用来自 Commons Lang 的 StringEscapeUtils#unescapeHtml(String) 。

参数

属性
描述
必需的
取消转义的字符串
要转义的字符串。
是的
^

__escapeHtml

使用 HTML 实体对字符串中的字符进行转义的函数。支持 HTML 4.0 实体。

例如,

${__escapeHtml("bread" & "butter")}
返回: “面包” & “黄油” .

使用来自 Commons Lang 的 StringEscapeUtils#escapeHtml(String) 。

参数

属性
描述
必需的
要转义的字符串
要转义的字符串。
是的
^

__urldecode

解码application/x-www-form-urlencoded字符串的函数。注意:使用 UTF-8 作为编码方案。

例如,字符串

${__urldecode(Word+%22school%22+is+%22%C3%A9cole%22+in+french)}
返回 单词“school”在法语中是“école”

使用 Java 类URLDecoder

参数

属性
描述
必需的
要解码的字符串
带有要解码的 URL 编码字符的字符串。
是的
^

__urlencode

将字符串编码为application/x-www-form-urlencoded字符串的函数。

例如,字符串

${__urlencode(Word "school" is "école" in french)}
返回 Word+%22school%22+is+%22%C3%A9cole%22+in+french

使用 Java 类URLEncoder

参数

属性
描述
必需的
要编码的字符串
以 URL 编码字符编码的字符串。
是的
^

__FileToString

FileToString 函数可用于读取整个文件。每次调用它都会读取整个文件。

如果打开或读取文件发生错误,则函数返回字符串“ **ERR**

参数

属性
描述
必需的
文件名
文件名的路径。(路径可以相对于 JMeter 启动目录)
是的
如果不是平台默认的文件编码
用于读取文件的编码。如果未指定,则使用平台默认值。
变量的名称
引用名称 - refName - 用于重用此函数创建的值。存储值的格式为 ${refName}

每次执行函数时都会解析文件名、编码和引用名称参数。

^

__samplerName

samplerName 函数返回当前采样器的名称(即标签)。

该功能在没有关联采样器的测试元素中不起作用。例如测试计划。配置元素也没有关联的采样器。然而,一些配置元素被采样器直接引用,例如 HTTP Header Manager 和 Http Cookie Manager,在这种情况下,函数在 Http Sampler 的上下文中解析。预处理器、后处理器和断言总是有一个关联的采样器。

例子:

${__samplerName()}

参数

属性
描述
必需的
变量的名称
引用名称 - refName - 用于重用此函数创建的值。存储值的格式为 ${refName}
^

__TestPlanName

TestPlanName 函数返回当前测试计划的名称(可以在 Include Plans 中使用以了解调用测试计划的名称)。

例子:

${__TestPlanName}
将返回您的测试计划的文件名,例如,如果计划在名为 Demo.jmx 的文件中,它将返回“ Demo.jmx

^

__escapeOroRegexpChars

转义ORO Regexp 元字符的函数,它相当于Java Regexp Engine 中的\Q \E

例如,

${__escapeOroRegexpChars([^"].+?,)}
返回: \[\^\"\]\.\+\?

使用来自 ORO 的 Perl5Compiler#quotemeta(String)。

参数

属性
描述
必需的
要转义的字符串
要转义的字符串。
是的
变量的名称
引用名称 - refName - 用于重用此函数创建的值。存储值的格式为 ${refName}
^

__escapeXml

使用 XML 1.0 实体对字符串中的字符进行转义的函数。

例如,

${__escapeXml("bread" & 'butter')}
返回: “面包”;& “黄油” .

使用来自 Commons Lang 的 StringEscapeUtils#escapeXml10(String) 。

参数

属性
描述
必需的
要转义的字符串
要转义的字符串。
是的
^

__timeShift

timeShift 函数返回给定格式的日期,并添加指定的秒数、分钟数、小时数、天数或月数

参数

属性
描述
必需的
格式
要传递给 DateTimeFormatter 的格式。请参阅DateTimeFormatter 如果省略,则该函数使用自纪元以来的毫秒数格式。
换班日期
以参数 'Format' 设置的格式指示日期要移位 如果省略,则日期设置为现在
价值转移
根据持续时间的文本表示,例如 PnDTnHnMn.nS,指示要转换的指定秒数、分钟数、小时数或天数。请参阅 https://docs.oracle.com/javase/8/docs/api/java/time/Duration.html#parse-java.lang.CharSequence-
  • PT20.345S解析为 20.345 秒
  • PT15M解析为 15 分钟
  • PT10H解析为 10 小时
  • P2D解析为 2 天
  • -P6H3M解析为 -6 小时 -3 分钟
用于格式的语言环境
语言环境的字符串格式。语言代码必须是小写的。国家代码必须是大写的。分隔符必须是下划线。例如:en_EN 请参阅 http://www.oracle.com/technetwork/java/javase/javase7locales-334809.html 如果省略,默认情况下该函数使用 ApacheJMeter 语言环境之一。
变量名
要设置的变量的名称。

例子:

${__timeShift(dd/MM/yyyy,21/01/2018,P2D,,)}
返回23/01/2018
${__timeShift(dd MMMM yyyy,21 février 2018,P2D,fr_FR,)}
2018 年 2 月 23 日回归

^

__摘要

摘要函数返回特定散列算法中的加密值,带有可选的盐、大写字母和变量名。

参数

属性
描述
必需的
算法
用于加密的算法 对于可能的算法,请参阅 StandardNames中的 MessageDigest
  • MD2
  • MD5
  • SHA-1
  • SHA-224
  • SHA-256
  • SHA-384
  • SHA-512
考虑到空格以供Salt 添加String 编码
是的
要编码的字符串
将被加密的字符串
是的
加盐
要添加到字符串中的盐(在它之后)
大写值
结果默认为小写。选择真到大写结果。
变量名
要设置的变量的名称。

例子:

${__digest(MD5,Errare humanum est,,,)}
返回c49f00b92667a35c63708933384dad52
${__digest(SHA-256,Felix qui potuit rerum cognoscere causas,mysalt,,)}
返回a3bc6900fe2b2fc5fa8a601a4a84e27a079bf2c581d485009bc5c00516729ac7

^

__dateTimeConvert

__dateTimeConvert函数将源格式的日期转换为目标格式,将结果可选地存储在变量名称中

参数

属性
描述
必需的
日期字符串
要从源日期格式转换为目标日期格式的日期字符串。如果源日期格式为空,则此处可以使用日期作为纪元时间。
是的
源日期格式
原始日期格式。如果为空,则日期字符串字段必须是纪元时间。
目标日期格式
新的日期格式
是的
变量名
要设置的变量的名称。

例子:

${__dateTimeConvert(01212018,MMddyyyy,dd/MM/yyyy,)}
返回21/01/2018

使用纪元时间值:1526574881000,

${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}
返回UTC 时间 17/05/2018 16:34 (-Duser.timezone=GMT)

^

__isPropDefined

__isPropDefined函数如果属性存在则返回 true,否则返回 false 。

参数

属性
描述
必需的
属性名称
用于检查是否已定义的属性名称
是的

例子:

${__isPropDefined(START.HMS)}
将返回

^

__isVarDefined

__isVarDefined函数如果变量存在则返回 true,否则返回 false 。

参数

属性
描述
必需的
变量的名称
用于检查是否已定义的变量名称
是的

例子:

${__isVarDefined(JMeterThread.last_sample_ok)}
将返回

^

__changeCase

change case 函数返回一个字符串值,该值已按照特定模式更改。结果可以选择保存在 JMeter 变量中。

参数

属性
描述
必需的
改变大小写的字符串
将更改大小写的字符串
是的
改变案例模式
用于更改大小写的模式,例如ab-CD eF
  • UPPER结果为 AB-CD EF
  • 降低结果为 ab-cd ed
  • 将结果大写为 Ab-CD eF
更改大小写模式不区分大小写
是的
变量名
要设置的变量的名称。

例子:

${__changeCase(Avaro omnia desunt\, inopi pauca\, sapienti nihil,UPPER,)}
将返回AVARO OMNIA DESUNT、INOPI PAUCA、SAPIENTI NIHIL
${__changeCase(LABOR OMNIA VINCIT IMPROBUS,LOWER,)}
将返回劳动力omnia vincit improbus
${__changeCase(omnibus viis romam pervenitur,CAPITALIZE,)}
将返回Omnibus viis romam pervenitur

^

__StringToFile

__StringToFile函数可用于将字符串写入文件。每次调用它时,它都会将一个字符串写入文件追加或覆盖。

函数的默认返回值是空字符串

参数

属性
描述
必需的
文件路径
文件名的路径。(路径是绝对的)
是的
要写入的字符串
要写入文件的字符串。
如果您需要在内容中插入换行符,请在字符串中 使用\n 。
是的
附加到文件?
字符串的写法,true表示追加,false 表示覆盖。如果未指定,则默认附加为true
文件编码(如果不是 UTF-8)
用于写入文件的编码。如果未指定,则默认编码为UTF-8
^

20.6 预定义变量

大多数变量是通过调用函数或通过用户定义变量等测试元素设置的;在这种情况下,用户可以完全控制所使用的变量名称。然而,一些变量是由 JMeter 在内部定义的。下面列出了这些。

  • COOKIE_cookiename - 包含 cookie 值(请参阅HTTP Cookie 管理器
  • JMeterThread.last_sample_ok - 最后一个样本是否正常 - true / false。注意:这是在 PostProcessors 和 Assertions 运行后更新的。
  • START变量(见下一节)

20.6 预定义属性

JMeter 属性集是从 JMeter 启动时定义的系统属性初始化的;额外的 JMeter 属性在jmeter.propertiesuser.properties或命令行中定义。

JMeter 定义了一些内置属性。下面列出了这些。为方便起见,START属性也被复制到具有相同名称的变量中。

  • START.MS - JMeter 开始时间(以毫秒为单位)
  • START.YMD - JMeter 开始时间为yyyyMMdd
  • START.HMS - JMeter 开始时间为HHmmss
  • TESTSTART.MS - 测试开始时间,以毫秒为单位

请注意,START变量/属性代表 JMeter 启动时间,而不是测试开始时间。它们主要用于文件名等。

Go to top