文章涉及47章节,查看可以通过ctrl+F更方便一些,查找需要用的哪个函数助手。
1.BeanShell
- 作用:运行BeanShell脚本
- 页面展示:
2.changeCase
- 作用:修改字符串大小写
UPPER:全字符串大写
LOWER:全字符串小写
CAPITALIZE:首字母大写 - 页面展示:
3.char
-
作用:把一组数字转化成Unicode字符
-
单个数字:
-
多个数字用英文逗号隔开,但是5.3版本会转义,如下:
使用的时候粘贴出来,把斜杠去掉即可。
4. counter
- 作用:计数器
- 页面展示:
5. CSVRead
- 作用:读取csv文件
${
__CSVRead(D:\1.csv,0)};读取第一列的值
${
__CSVRead(D:\1.csv,next())}; 每次读取下一次的值,配合第一条使用,否则不知道从哪里开始
${
__CSVRead(D:\1.csv,*user_info)};使用别名,然后通过以下方法获取数据
${
__CSVRead(*user_info, 1)}
- 页面展示:
6.dataTimeConvert
- 作用:格式化日期
- 年月日:
- 年月日时分:
7.digest
- 作用:加密
- 加密算法:MD2,,MD5,SHA-1,SHA224,SHA256,SHA384,SHA512
- 需要加密的值
- 撒盐加密
- 是否要转成大写
- 变量名称
除了加密算法和需要加密的值其他可不填。
8.escapeHtml
- 作用:字符转成Html格式的字符
Html特殊字符对照表 - 页面展示:
9.escapeOroRegexChars
- 作用:把正则表达式转换成Java正则引擎能识别的表达式
- 页面展示:
10.escapeXml
- 作用:字符转成xml格式的字符
- xml字符转换:
- 页面展示:
11.eval
- 作用:获取值
- 页面展示:
12.evalVar
- 作用:返回表达式的结果
QUERY = select ${
column} from ${
table}; column=name, table=customers
${
__evalVar(QUERY)} = select name from customers
13.fileToString
- 作用:读取文件保存至变量中
- 页面展示:
14.groovy
- 作用:执行Apache Groovy脚本,并返回结果
- 页面展示:
15.intSum
- 作用:整数求和,多个数字之间用逗号分隔
- 单个数字求和:
- 5.3版本多个数字用英文逗号隔开的时候,点击生成会被转义,使用的时候粘贴出来把斜杠去掉即可。
16.isPropDefined
- 作用:判断属性是否存在
- 页面展示:
17.isVarDefined
- 作用:判断变量是否存在
我找了一下jmeter的内置变量,写进来都是false,难道这个变量就是指下面这几个吗?这个不怎么常用,暂且先这样。 - 页面展示:
18.javaScript
- 作用:用来返回js脚本执行结果,也可以调用JS中的库函数
javaScript表达式的Date的D要大写,要不然不显示。 - 页面展示:
19.jexl2和jexl3略。
20.log
- 作用:日志信息
- String to be logged(and returned):字符串
- Log level(default INFO) or OUT or ERR:日志级别
(1) OUT:控制台打印
(2) ERR:控制台输出,同时打印到标准输出
(3) DEBUG:控制台输出,DEBUG级别以上的都打印
(4) INFO:控制台打印INFO及ERROR级别的日志
(5) WARN:控制台打印WARN,INFO,ERROR级别的日志
(6) ERROR:控制台打印ERROR级别的日志 - Throwable text(optional):抛出的异常信息
- Additional comment(optional):附加信息
- 页面展示:
21.logn
- 作用:与__log类似,不过它只记录一条日志,不返回值
- 页面展示:
21.longSum
- 作用:计算长整型的和
- 页面展示:
22.machineIP
- 作用:引用返回本机IP
- 页面展示:
23.machineName
- 作用:返回本机名称
- 页面展示:
24.P
- 作用:获取属性或值
- 非GUI方式运行测试计划时这个函数可用来做参数化,由运行命令动态指定参数值,方便与Jenkins等集成完成性能测试工作
示例
25.property
- 作用:获取jmeter属性
非注释的属性可以获取到,如果是注释的获取不到。 - 页面展示:
26.Random
- 作用:随机数
- 随机生成1-10中的任意数。
- 页面展示:
27.RandomDate
- 作用:生成指定范围内的日期
默认的可以不用填。 - 页面展示:
28.RandomFromMultipleVars
- 作用:多个值中随机取值
在用户定义的变量中设置a=1,b=2,c=3 - 页面展示:
粘贴函数助手的表达式:
结果如下:
29.RandomString
- 作用:随机生成指定长度的字符串
- 页面展示:
30.regexFunction
- 作用:提取正则表达式。这个功能类似于后置里的正则表达式提取器。
解释如下:
- 用于从前一个请求搜索结果的正则表达式:它会找到所有匹配项,如果希望将表达式中的某部分应用在模板字符串中,一定记得为其加上圆括号。这样就会将链接的值存放到第一个匹配组合中。比如
<input type="hidden" name="(.)" value="(.)">
,在这个例子中,链接的name作为第一个匹配组合,链接的value会作为第二个匹配组合。
注意:不加括号,结果会显示null。 - 替换字符串的模板,使用正则表达式中的组。 格式为$ [group] $。 例如$1 $
- 使用哪个匹配。
1)“1”对应第一个匹配,“2”对应第二个匹配;
2)ALL表示JMeter使用所有匹配项,为每个匹配项创建一个模板字符串,并将它们连接在一起;
3)RAND表示JMeter随机选择一项匹配;
4)浮点值0到1之间,根据公式(找到的总匹配数目*指定浮点值)计算使用第几个匹配项,计算值向最近的整数取整。 - 文字之间。 如果选择“ALL”,那么第4个参数会被插入到重复的模板值之间
- 默认值。 如果正则表达式未找到匹配项,则使用它而不是模板;
- 存储结果的变量名(可选):自己随便写
- 输入变量名称,其中包含要解析的文本
- 页面展示:
31.sampleName
- 作用:获取当前sample的name
代码如下:
//__TestPlanName
vars.put("testplan","${__TestPlanName}");
String testplanName = vars.get("testplan");
log.warn("=============计划名称:"+testplanName);
//threadGroupName
vars.put("threadGroup","${__threadGroupName}");
String threadGroupName = vars.get("threadGroup");
log.warn("=============线程组名称:"+threadGroupName);
//__threadNum
vars.put("threadNum","${__threadNum}");
String threadNum = vars.get("threadNum");
log.warn("=============线程编号:"+threadNum);
//__samplerName
vars.put("samplerName","${__samplerName()}");
String samplerName = vars.get("samplerName");
log.warn("=============请求名称:"+samplerName);
//__machineIP
vars.put("machineIP","${__machineIP()}");
String machineIP = vars.get("machineIP");
log.warn("=============返回IP地址:"+machineIP);
//__machine Name
vars.put("machineName","${__machineName()}");
String machineName = vars.get("machineName");
log.warn("=============返回设备名称:"+machineName);
运行结果如下:
32.setProperty
- 作用:动态设置jmeter属性
- 这个设置的属性不是jmeter.properties文件中的属性。
用法点击这里
33.spilt
- 作用:分割字符串
- 页面展示:
34.StringFromFile
- 作用:从文件中读取内容,一行一行的读取,读完再从头开始
- 页面展示:
txt文件中是中文。
txt文件格式是UTF-8,函数助手中是乱码。
txt文件格式是ANSI,函数助手中不是乱码。 - 读取一个文件
想读取几行数据,循环就写几次。
- 读取多个文件
${
__StringFromFile(D:\#.txt,value,1,2)}
有多个文本文件,想一起读取,文件名分别是 1.txt,2.txt
#:代表限定符,插入数字
1:读取文件的初始位置的数字,这里就是 1.txt
2:读取文件的最终位置的数字,这里就是 2.txt
35.StringToFile
- 作用:把字符串写进文件中
- Path to file (absolute):文件绝对路径
- String to write:要写的字符串
- Append to file (true appends, false overwrites, default true):追加到文件(真追加,假覆盖,默认真)
- Charset (defaults to UTF-8):编码(默认是utf-8)
- 页面展示:
新建一个空文档
36.TestPlanName
- 作用:获取测试计划名称
- 页面展示:
37.ThreadGroupName
- 作用:获取当前线程组名称
- 页面展示:
38.threadNum
- 作用:返回当前线程号
- 页面展示:
39.time
- 作用:格式化时间
- 页面如下:
40.timeShift
- 作用:格式化时间
- 变量解释:
(1) DateTimeFormatter的格式字符串(可选)(默认的unix时间戳,以毫秒为单位)
(2) 转换时间(可选)(默认:现在)
(3) 要添加的秒/分钟/小时/天的数量(例如P2D:加上两天)(可选)
“PT20.345S”解析为“20.345秒”
“PT15M”解析为“15分钟”
“PT10H”解析为“10小时”
“P2D”解析为“2天”
“P2DT3H4M”解析为“2天,3小时和4分钟”
“P-6H3M”解析为“-6小时+3分钟”
“-P6H3M”解析为“-6小时-3分钟”
“-P-6H + 3M”解析为“+6小时和-3分钟”
(4) 语言环境的字符串格式(例如:fr_FR,en_EN)(可选)
41.unescape
- 作用:反转escape字符
- 转义字符:
- 页面如下:
42.unescapeHtml
-
作用:反转html字符
Html转义字符对照表 -
页面展示:
43.urldecode
- 作用:decode application/x-www-form-urlencoded字符串
- 页面展示:
44.urlencode
- 作用:转换成url编码格式字符串
- 页面展示:
45.UUID
- 作用:获取UUID
- UUID是什么:通用唯一识别码,这 是一个软件建构的标准,也是被开源软件基金会的组织应用在分布式计算环境领域的重要部分。
- UUID什么用:让分布式系统中的所有元素,都能有唯一的辨识资讯,而不需要透过中央控制端来做辨识资讯的指定。
- 页面展示:
46.V
- 作用:用于执行变量名表达式,并返回执行结果。它可以被用于执行嵌套函数引用(目前JMeter不支持)
- 变量解释:
Name of variable (may include variable and function references):变量名称(可能包括变量和函数引用) - 页面展示:
如果存在变量A1、A2和N=1,则:
${A1}:能正常工作。
${A ${N}}:无法正常工作(嵌套变量引用)。
${__V(A ${N})}:可以正常工作。A ${N}变为A1,函数 __V返回变量值A1。
47.Xpath
- 作用:根据xpath获取xml节点内容,没有匹配到,则返回空字符串
- 页面展示:
参考博客:
https://www.cnblogs.com/poloyy/p/13396638.html
https://www.cnblogs.com/poloyy/p/13387356.html
https://www.jianshu.com/p/c66b846e2ada
https://www.cnblogs.com/xiaochao-testing/p/10142799.html
https://www.jianshu.com/p/c66b846e2ada
https://www.cnblogs.com/xiaoxiaoqiye/p/5919932.html