计数器每次调用时都会生成一个新数字,从 1 开始,每次递增 +1。计数器可以配置为将每个模拟用户的值分开,或者为所有用户使用相同的计数器。如果每个用户的值分别递增,这就像计算测试计划的迭代次数。全局计数器就像计算该请求运行了多少次。
线程号函数只是返回当前正在执行的线程号。这些数字仅相对于它们的 ThreadGroup 是局部唯一的,这意味着从这个函数的角度来看,一个线程组中的线程 #1 与另一个线程组中的线程 #1 无法区分。
该函数返回一个介于 1 和最大运行线程数之间的数字。请注意,如果您将 JSR223 代码与
JMeterContext
对象(
ctx
变量)一起使用,则以下代码将返回一个介于零和(最大运行线程数减一)之间的数字
ctx.getThreadNum()
${__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(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})
(尽管
#.
和
000.
在小数点也是“
.
”的语言环境中按预期工作)
在其他语言环境中(例如
fr
),小数点是“
,
”——这意味着“
#.
”变成了“
nnn,
”。有关完整详细信息,
请参阅
DecimalFormat的文档。
如果路径名不包含任何特殊格式字符,则将当前序号附加到名称后,否则将根据格式说明插入序号。
如果省略了开始序号,而指定了结束序号,则序号被解释为循环计数,并且文件将最多使用“
end
”次。在这种情况下,文件名未格式化。
${__StringFromFile(PIN#'.'DAT,,1,2)}
- 读取
PIN1.DAT
,
PIN2.DAT
${__StringFromFile(PIN.DAT,,,2)}
- 读取
PIN.DAT
两次
注意 "
.
" 在上面的
PIN.DAT
中应该
不
被引用。在这种情况下,起始编号被省略,因此文件名完全按原样使用。
请记住为文本字符串和 JMeter 变量添加任何必要的引号。另外,如果表达式有逗号,请确保将它们转义。例如在:
${__javaScript('${sp}'.slice(7\,99999))}
后的逗号被转义。
${__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)}
将使用
maxRandom
和
minRandom
变量,返回
maxRandom
和
minRandom
之间的随机值并将其存储在变量
MYRESULT下
${__javaScript("${VAR}"=="abcd",MYRESULT)}
将
VAR
变量的值与
abcd
进行比较,返回
true
或
false
并将结果存储在 MYRESULT
用于格式的语言环境
语言环境的字符串格式。语言代码必须是小写的。国家代码必须是大写的。分隔符必须是下划线,例如
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(5)}
将返回一个 5 个字符的随机字符串,该字符串是否可读
${__RandomString(10,abcdefg)}
将返回从
abcdefg
集合中挑选的 10 个字符的随机字符串,例如
cdbgdbeebd
或
adbfeggfad
,...
${__RandomString(6,a12zeczclk, MYVAR)}
将返回从
a12zeczclk
集合中挑选的 6 个字符的随机字符串,并将结果存储在
MYVAR
中,
MYVAR
将包含类似
2z22ak
或
z11kce
的字符串,...
${__RandomFromMultipleVars(val)}
将根据变量 val 的内容返回一个随机字符串,同时考虑它们是否为多值
${__RandomFromMultipleVars(val1|val2)}
将根据变量 val1 和 val2 的内容返回一个随机字符串,同时考虑它们是否为多值
${__RandomFromMultipleVars(val1|val2, MYVAR)}
将根据变量 val1 和 val2 的内容返回一个随机字符串,同时考虑它们是否为多值,并将结果存储在
MYVAR
对相同文件名的所有后续引用都使用相同的内部数组。注意文件名大小写对函数很重要,即使操作系统不关心,所以
CSVRead(abc.txt,0)
和
CSVRead(aBc.txt,0)
将引用不同的内部数组。
*ALIAS
功能允许多次打开同一个文件,也允许使用更短的文件名
每个线程都有自己的内部指针,指向文件数组中的当前行。当一个线程第一次引用该文件时,它将被分配到数组中的下一个空闲行,因此每个线程将访问与所有其他线程不同的行。[除非线程数多于数组中的行数。]
默认情况下,该函数在每个逗号处拆分行。如果要输入包含逗号的列,则需要通过设置属性将分隔符更改为不出现在任何列数据中的字符:
csvread.delimiter
这是一个简化的属性函数,旨在与命令行上定义的属性一起使用。与
__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) }
-如果未定义
,则返回属性
hostname
或
www.dummy.org
在上面的示例中,第一个函数调用将返回
7
,第二个函数调用将返回
1
,最后一个将返回
www.dummy.org
(除非这些属性已定义别处!)
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
=
空
XPath 函数读取一个 XML 文件并匹配 XPath。每次调用该函数时,都会返回下一个匹配项。在文件末尾,它将环绕到开头。如果没有节点匹配,则函数将返回空字符串,并将警告消息写入 JMeter 日志文件。
请注意,整个 NodeList 都保存在内存中。
setProperty 函数设置 JMeter 属性的值。函数的默认返回值是空字符串,因此函数调用可以在函数有效的任何地方使用。
可以通过将可选的第三
个参数设置为“
true
”来返回原始值。
属性对 JMeter 来说是全局的,因此可以用来在线程和线程组之间进行通信
${__time(dd/MM/yyyy,)}
如果在 2018 年 1 月 21 日运行, 将返回
21/01/2018
${__time(YMD,)}
如果在 2018 年 1 月 21 日运行, 将返回
20180121
${__time()}
将以毫秒为单位返回时间
1516540541624
now=Systemclass.currentTimeMillis();
请注意,网站上的 Jexl 文档错误地建议“
div
”进行整数除法。实际上“
div
”和“
/
”都执行正常的除法。可以得到如下相同的效果:
i= 5 / 2;
i.intValue(); // or use i.longValue()
now=Systemclass.currentTimeMillis();
请注意,网站上的 Jexl 文档错误地建议“
div
”进行整数除法。实际上“
div
”和“
/
”都执行正常的除法。可以得到如下相同的效果:
i= 5 / 2;
i.intValue(); // or use i.longValue()
这允许人们从文件中读取字符串,并处理其中的任何变量引用。例如,如果变量“
query
”包含“
select ${column} from ${table}
”并且“
column
”和“
table
”包含“
name
”和“
customers
”,则
${__evalVar(query)}
将评估为“
从客户中选择名称
”。
该功能在没有关联采样器的测试元素中不起作用。例如测试计划。配置元素也没有关联的采样器。然而,一些配置元素被采样器直接引用,例如 HTTP Header Manager 和 Http Cookie Manager,在这种情况下,函数在 Http Sampler 的上下文中解析。预处理器、后处理器和断言总是有一个关联的采样器。
例子:
${__samplerName()}
用于格式的语言环境
语言环境的字符串格式。语言代码必须是小写的。国家代码必须是大写的。分隔符必须是下划线。例如: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 日
回归
使用纪元时间值:1526574881000,
${__dateTimeConvert(1526574881000,,dd/MM/yyyy HH:mm,)}
返回UTC 时间 17/05/2018
16:34
(-Duser.timezone=GMT)
${__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
Apache, Apache JMeter, JMeter, the Apache
feather, and the Apache JMeter logo are
trademarks of the
Apache Software Foundation.