d.JMeter函数

JMeter函数和用户变量

  • JMeter 函数是可以填充任何采样器或其他元素在测试树字段的特殊值。一个函数调用看起来像这样:

    ${__functionName(var1,var2,var3)}
  • _functionName 函数的名称相匹配。例如 ${__threadNum}.

  • 如果一个函数参数包含一个逗号,然后转义“”,如下图所示。

    ${__time(EEE, d MMM yyyy)}
  • 引用变量:

    ${VARIABLE}

函数列表

下表列出了一组函数类型大致分为:

函数类型名称注释
InformationthreadNumget thread number
InformationsamplerNameget the sampler name (label)
InformationmachineIPget the local machine IP address
InformationmachineNameget the local machine name
Informationtimereturn current time in various formats
Informationloglog (or display) a message (and return the value)
Informationlognlog (or display) a message (empty return value)
InputStringFromFileread a line from a file
InputFileToStringread an entire file
InputCSVReadread from CSV delimited file
InputXPathUse an XPath expression to read from a file
Calculationcountergenerate an incrementing number
CalculationintSumadd int numbers
CalculationlongSumadd long numbers
CalculationRandomgenerate a random number
CalculationRandomStringgenerate a random string
CalculationUUIDgenerate a random type 4 UUID
ScriptingBeanShellrun a BeanShell script
ScriptingjavaScriptprocess JavaScript (Mozilla Rhino)
Scriptingjexl, jexl2evaluate a Commons Jexl expression
Propertiespropertyread a property
PropertiesPread a property (shorthand method)
PropertiessetPropertyset a JMeter property
VariablessplitSplit a string into variables
VariablesVevaluate a variable name
Variablesevalevaluate a variable expression
VariablesevalVarevaluate an expression stored in a variable
StringregexFunctionparse previous response using a regular expression
StringescapeOroRegexpCharsquote meta chars used by ORO regular expression
Stringchargenerate Unicode char values from a list of numbers
StringunescapeProcess strings containing Java escapes (e.g. & )
StringunescapeHtmlDecode HTML-encoded strings
StringescapeHtmlEncode strings using HTML encoding
StringTestPlanNameReturn name of current test plan
  • 有两种类型的函数:

    • 用户定义的静态值(或变量)

    • 内置函数

  • 用户定义的静态值允许用户定义变量时被替换为静态的值测试树编译并提交运行。

  • 需要注意的是,变量目前无法嵌套,即${Var${N}}不起作用。

  • __ V(变量)函数(版本2.2后)可用于执行此操作: ${__V(Var${N})}.

  • 这种类型的替换可能没有函数,但更方便,更直观

函数和变量可以在哪里使用?

  • 函数和变量可以被写入到任何领域的任何测试部件。

  • 下面的函数测试计划应确定工作:

    • intSum

    • longSum

    • machineName

    • BeanShell

    • javaScript

    • jexl

    • random

    • time

    • property functions

    • log functions

测试计划使用的功能有一些限制。JMeter的线程变量没有被完全成立处理功能时,不会设置变量名作为参数传递,将无法正常工作和变量引用,所以split() 和 regex() 变量赋值函数不会工作。 threadNum() 函数将不能工作(没有任何意义在测试计划级别)。

引用变量及函数

  • 引用的变量中的测试元件是通过包围在变量名 '${' and '}'.

  • 函数中引用同样的方式,但按照惯例,函数的名称以“__”开头,以避免冲突与用户值的名称。

  • 有些函数带参数的配置,而这些括号中,逗号分隔。如果函数没有参数,括号可以省略。对于例如:

    ${__BeanShell(vars.put("name","value"))}
  • 另外,可以定义你的脚本作为一个变量,例如测试计划:

    SCRIPT     vars.put("name","value")
  • 然后,该脚本可以被引用如下:

    ${__BeanShell(${SCRIPT})}

函数辅助对话框

JMeter 选项“tab“可从函数助手对话框。
Function Helper Dialog

  • 使用函数助手,可以选择一个函数从拉下来,并指派其参数值。左边的表中的列的参数,简要说明和右列是你写在该参数的值。不同函数的不同参数。

  • 一旦这样做了,点击“生成”按钮,并产生相应的字符串复制粘贴到测试计划。

预定义变量

JMeter 内部定义的一些变量。它们分别是:

  • COOKIE_cookiename – 包含cookie的值

  • JMeterThread.last_sample_ok – 与否的最后一个样本是确定的 –  true/false。注:这是更新后的后处理和断言已经运行。

  • START 变量

预先定义的特性

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

  • START.MS – JMeter 启动时间(毫秒)

  • START.YMD – JMeter 启动时间为 yyyyMMdd

  • START.HMS – JMeter 启动时间为 HHmmss

  • TESTSTART.MS – 测试开始时间(毫秒)

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

Posted in 全面使用教程.