Jmeter的函数助手

打开选项找到函数助手

image.png
image.png

常用JMeter函数

  • __regexFunction函数
image.png
函数参数 描述 是否必需
第1个参数 第1个参数是用于解析服务器响应数据的正则表达式,它会找到所有匹配项;如果希望将表达式中的某部分应用在模板字符串中,一定记得为其加上圆括号。例如,<a href="(.)">,这样就会将链接的值存放到第一个匹配组合中(这里只有一个匹配组合)。又如,<input type="hidden"name="(.)"value="(.*)">,在这个例子中,链接的name作为第一个匹配组合,链接的value会作为第二个匹配组合,这些组合可以用在测试人员的模板字符串中
第2个参数 这是一个模板字符串,函数会动态填写字符串的部分内容。要在字符串中引用正则表达式捕获的匹配组合,请使用语法:$[group_number]$。例如$1$或者 $2$。测试人员的模板可以是任何字符串
第3个参数 第3个参数告诉JMeter使用第几次匹配;测试人员的正则表达式可能会找到多个匹配项,对此,有4种选择 :【1、】整数,直接告诉JMeter使用第几个匹配项。 “1”对应第一个匹配,“2”对应第二个匹配,以此类推【 2、】RAND,告诉JMeter随机选择一个匹配项 【 3、】ALL,告诉JMeter使用所有匹配项,为每一个匹配项创建一个模板字符串,并将它们连接在一起 【4、】浮点值0到1之间,根据公式(找到的总匹配数目*指定浮点值)计算使用第几个匹配项,计算值向最近的整数取整 否,默认值该是 1
第4个参数 如果在上一个参数中选择了“ALL”,那么这第4个参数会被插入到重复的模板值之间
第5个参数 如果没有找到匹配项返回的默认值
第6个参数 可以指定一个引用名;在函数执行以后,可以使用用户定义值的语法来获取同样的值。例如,如果输入"refName"作为第6个参数,那么可以使用:【1】${refName}来引用第2个参数(Template for the replacement string)的计算结果,这依赖于函数的解析结果;【2】${refName_g0}来引用函数解析后发现的所有匹配结果;【3】${refName_g1}来引用函数解析后发现的第一个匹配组合;【4】${refName_g#}来引用函数解析后发现的第n个匹配组合;【5】${refName_matchNr}来引用函数总共发现的匹配组合数目;
第7个参数 输入变量名称。如果指定了这一参数,那么该变量的值就会作为函数的输入,而不再使用前面的采样结果作为搜索对象
  • __CSVRead函数
image.png

其中:

CSV file to get values from |*alias:| 要读取的文件路径,为绝对路径|
CSV文件列号| next| alias:从第几列开始读取,注意第一列是0 ,第二列是1,依此类推。“next”为走到文件的下一行。alias为打开
一个文件,并给它分配一个别名

使用*ALIAS特性可以多次打开同一个文件,另外还能缩减文件名称
每一个线程都有独立的内部指针指向文件数组中的当前行;当某个线程第一次引用文件时,
函数会为线程在数组中分配下一个空闲行。如此一来,任何一个线程访问的文件行,
都与其他线程不同(除非线程数大于数组包含的行数)。
默认下,函数会在遇到每一个逗号处断行;如果希望在输入列中使用逗号,
那么需要换一个分隔符(设置属性csvread.delimiter实现),
且该符号没有在CSV文件任何列中出现。
  • _Random函数
image.png
函数参数 描述 是否必需
最小值 最小数值
最大值 最大数值
变量名 重用函数计算值的引用名

注意:当我们设置的线程数超过随机数范围时,随机数将会重复生成

  • _ StringFromFile 函数
image.png
函数参数 描述 是否必需
文件名 文件名(可以使用相对于JMeter启动目录的相对路径)
变量名 一个引用名(refName)的目的是复用这一函数创建的值。可以使用语法${refName}来引用函数创建的值。默认值为“StringFromFile_”
初始序列号 初始序列号(如果省略这一参数,终止序列号会作为一个循环计数器
终止序列号 终止序列号(如果省略这一参数,序列号会一直增加下去,不会受到限制)

注意:当线程组大于(文件行数)时,将只会执行(文件行数)次——终止序列号,而不会循环读取执行所有的设定线程组数,没有指定读取次数,则默认会循环读取数据

  • __javaScript函数
image.png
函数参数 描述 是否必需
JavaScript代码片段 待执行的JavaScript代码片段,例如:【1】new Date():返回当前日期和时间【2】Math.floor(Math.random()(${maxRandom}+1)):在0和变量maxRandom之间的随机数【3】${minRandom}+Math.floor(Math.random()(${maxRandom}-${minRandom}+1)):在变量 minRandom和maxRandom之间的随机数"${VAR}"=="abcd"
变量名 重用函数计算值的引用名
函数__javaScript可以用来执行JavaScript代码片段(非Java),并返回结果值。
JMeter的_javaScript函数会调用标准的JavaScript解释器JavaScript会作为脚本语言使用,
因此测试人员可以做相应的计算。

在脚本中可以访问如下一些变量。
Log:该函数的日志记录器。
Ctx:JmeterContext对象。
Vars:JmeterVariables对象。
threadName:字符串包含当前线程名称 (在2.3.2 版本中它被误写为"theadName")。
sampler:当前采样器对象(如果存在)。
sampleResult:前面的采样结果对象(如果存在)。
props:JMeter属性对象。
Rhinoscript允许通过它的包对象来访问静态方法。
例如,用户可以使用如下方法访问JMeterContextService静态方法:
Packages.org.apache.jmeter.threads.JMeterContextService.getTotalThreads()
JMeter不是一款浏览器,它不会执行从页面下载的JavaScript。
  • __BeanShell函数
image.png
函数参数 描述 是否必需
BeanShell脚本 一个BeanShell脚本(不是文件名)
变量名 重用函数计算值的引用名
该函数允许用户运行一段自定义的BeanShell函数,脚本可以用来设置JMeter的属性和参数值,
也可以返回数据。BeanShell是一种非常灵活的脚本方式。
需要注意,测试脚本中每一个独立出现的函数调用,都会使用不同的解释器,
但是后续对函数调用的援引会使用相同的解释器;这就意味着变量会持续存在,并跨越函数调用
单个函数实例可以从多个线程调用。另外,该函数的execute()方法是同步的。
如果定义了属性"beanshell.function.init",那么它会作为一个源文件传递给解释器。
这样就可以定义一些通用方法和变量。
在bin目录中有一个初始化文件的例子:BeanShellFunction.bshrc。
如下变量在脚本执行前就已经设置:
log:函数BeanShell(*)的记录器;

ctx:目前的JMeter Context变量;

vars:目前的JMeter变量;

props:JMeter属性对象;

threadName:线程名(字符串);

sampler:当前采样器(如果存在);

sampleResult:当前采样器(如果存在);

"*"意味着该变量在JMeter使用初始化文件之前就已经设置了。
其他变量在不同调用之间可能会发生变化;
  • __counter函数
image.png
函数参数 描述 是否必需
第1个参数 True,如果希望每个虚拟用户的计数器保持独立,与其他用户的计数器相区别;false,全局计数器;
第2个参数 重用计数器函数创建值的引用名。可以这样引用计数器的值:${refName}。这样一来,就可以创建一个计数器后,在多个地方引用它的值
每次调用计数器函数都会产生一个新值,从1开始每次加1。
计数器既可以被配置成针对每个虚拟用户是独立的,也可以被配置成所有虚拟用户公用的。
如果每个虚拟用户的计数器是独立增长的,那么通常被用于记录测试计划运行了多少遍。
全局计数器通常被用于记录发送了多少次请求,
计数器使用一个整数值来记录,允许的最大值为2,147,483,647
全局计数器(FALSE)每个计数器实例都是独立维护的
  • __time函数
image.png
函数参数 描述 是否必需
格式 设置时间所采用的格式
变量名 待设置变量名
函数__time可以通过多种格式返回当前时间
如果省略了格式字符串,那么函数会以毫秒的形式返回当前时间。
其他情况下,当前时间会被转成简单日期格式。包含如下形式:

YMD = yyyyMMdd;

HMS = HHmmss;

YMDHMS = yyyyMMdd-HHmmss;

USER1 = JMeter属性time.USER1;

USER2 = JMeter属性time.USER2;

用户可以通过修改JMeter属性来改变默认格式,例如:time.YMD=yyMMdd。

总结

我参考资料总结了常用的几个函数,仔细写明,方便自己以后参考
【参考资料】(http://www.cnblogs.com/imyalost/p/6802173.html

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 212,080评论 6 493
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 90,422评论 3 385
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 157,630评论 0 348
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 56,554评论 1 284
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 65,662评论 6 386
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 49,856评论 1 290
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 39,014评论 3 408
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 37,752评论 0 268
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 44,212评论 1 303
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 36,541评论 2 327
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 38,687评论 1 341
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 34,347评论 4 331
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,973评论 3 315
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,777评论 0 21
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 32,006评论 1 266
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 46,406评论 2 360
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 43,576评论 2 349

推荐阅读更多精彩内容