jmeter作为一个开源的性能测试工具,作用还是蛮强大的,找到一篇对jmeter中函数助手解释蛮详细的一篇博客,感觉不错,转载过来,希望对大家有所帮助。
原文地址:http://blog.csdn.net/fanjeff/article/details/46873159
一、使用jmeter函数助手
启动jmeter后,可以在JMeter的选项菜单中找到函数助手对话框(快捷键:Ctrl+Shift+F1),如下图所示:
打开函数助手,可以从下拉列表中选择一个函数,并为其参数设定值,不同函数要求的参数也不同;表格的左边一列是函数参数的简要描述,右边一列是供用户填充参数的值。
二、常用JMeter函数
1、__regexFunction
正则表达式函数可以使用正则表达式(用户提供的)来解析前面的服务器响应(或者是某个变量值),函数会返回一个有模板的字符串,其中携带有可变的值。
__regexFunction还可以被用来保存值,以便供后续使用。
在函数的第6个参数中,可以指定一个引用名;在函数执行以后,可以使用用户定义值的语法来获取同样的值。例如,如果输入"refName"作为第6个参数,那么可以使用:
${refName}来引用第2个参数(Template for the replacement string)的计算结果,这依赖于函数的解析结果;
${refName_g0}来引用函数解析后发现的所有匹配结果;
${refName_g1}来引用函数解析后发现的第一个匹配组合;
${refName_g#}来引用函数解析后发现的第n个匹配组合;
${refName_matchNr}来引用函数总共发现的匹配组合数目;
参数如下表所示:
函数参数 | 描述 | 是否必需 | |||||||||||||||||||||||||||||||||||||||||
第1个参数 | 第1个参数是用于解析服务器响应数据的正则表达式,它会找到所有匹配项;如果希望将表达式中的 某部分应用在模板字符串中,一定记得为其加上圆括号。例如,<a href="(.*)">,这样就会将链 接的值存放到第一个匹配组合中(这里只有一个匹配组合)。又如,<input type="hidden" name="(.*)"value="(.*)">,在这个例子中,链接的name作为第一个匹配组合,链接的value会 作为第二个匹配组合,这些组合可以用在测试人员的模板字符串中。 | 是 | |||||||||||||||||||||||||||||||||||||||||
第2个参数 | 这是一个模板字符串,函数会动态填写字符串的部分内容。要在字符串中引用正则表达式捕获的匹配组 合,请使用语法:[groupnumber][groupnumber]{SQL})},就能执行"select age from birthdays where name='Smith'"。这样一来,就可以与CSV数据集相互配合; 例如:将SQL语句和值都定义在数据文件中。 参数如下表所示:
24、__char 函数__char会将一串数字翻译成Unicode字符,另外还请参考下面__unescape()函数。 参数如下表所示:
Unicode字符编码(十进制数或者十六进制数) 待转换的Unicode字符编码,可以是十进制数或者十六进制数; 例如: ①${__char(0xC,0xA)} = CRLF ②${__char(165)} = � (yen)
25、__unescape 函数__unescape用于反转义Java-escaped字符串,另外还请参考上面的__char函数。 参数如下表所示:
例如: ①${__unescape(\r\n)} = CRLF ②${__unescape(1\t2)} = 1[tab]2
26、__unescapeHtml 函数__unescapeHtml用于反转义一个包含HTML实体的字符串,将其变为包含实际Unicode字符的字符串。支持HTML 4.0实体。 例如,字符串"<Français>"变为"<Fran?ais>"。 如果函数不认识某个实体,就会将实体保留下来,并一字不差地插入结果字符串中。例如,">&zzzz;x"会变为">&zzzz;x"。 参数如下表所示:
27、__escapeHtml 函数__escapeHtml用于转义字符串中的字符(使用HTML实体)。支持HTML 4.0实体。 例如,"bread" & "butter"变为"bread" & "butter"。 参数如下表所示:
28、__FileToString 函数__FileToString可以被用来读取整个文件。每次对该函数的调用,都会读取整个文件。 如果在打开或者读取文件时发生错误,那么函数就会返回字符串"**ERR**"。 参数如下表所示:
三、变量 1、预定义变量 大多数变量都是通过函数调用和测试元件(如用户定义变量)来设置的;在这种情况下用户拥有对变量名的完整控制权。但是有些变量是JMeter内置的。例如: Cookiename:包含Cookie值。 JMeterThread.last_sample_ok:最近的采样是否可以(true/false)。
2、预定义变量属性 JMeter属性集是在JMeter启动时通过系统属性初始化的;其他补充JMeter属性来自于jmeter.properties、user.properties或者命令行。 JMeter还另外定义了一些内置属性。下面是具体列表。从方便的角度考虑,属性START的值会被复制到同名变量中去。 START.MS:以毫秒为单位的JMeter启动时间; START.YMD:JMeter启动日期格式yyyyMMdd; START.HMS:JMeter启动时间格式HHmmss; TESTSTART.MS:以毫秒为单位的测试启动时间; 请注意:START变量/属性表征的是JMeter启动时间,而非测试的启动时间。它们主要用于文件名之中。 |