赞
踩
函数
作用:实现表单内容参数化、数据运算、字符转换等
函数助手(jmeter提供的函数编写工具)
函数说明:
- # beanshell:调用beanshell脚本计算参数,函数形式:${__BeanShell(value)},
- value可为beanshell语句、beanshell脚本
- ${__BeanShell("hello "+"gtlx")} ==> 字符串拼接:hello gtlx
-
- # char:将数字转换为unicode值,函数形式:${__char(num,...)}
- ${__char(65)}==> 将65转换为A
- ${__char(65,66)} ==> 将65,66转换为AB
-
- # counter:计数器,函数形式:${__counter(true|false,i)}
- true:每个线程独立计数、false:所有线程加总计数;i:计数变量名,可随意设置
- ${__counter(true,i)} ==> 每个线程独立计数,计数步长为1
- ${__counter(false,i)} ==> 所有线程加总计数
-
- # CSVRead:从文件中读取指定列的值,函数形式:${__CSVRead(fileName|*别名,列名|next|*alias)}
- 函数包含两个参数:第一个参数为文件名或者别名
- 列名从0开始编号、next读取下一行数据、*alias文件别名
- ${__CSVRead(file,0)}:读取文件第一行的0列数据
- ${__CSVRead(file,0)}${__CSVRead(file,next)}:迭代读取每一行的第0列数据
- ${__CSVRead(file,0)}|${__CSVRead(file,1)}${__CSVRead(file,next)}:迭代读取每一行的第0、1列数据
-
- # escapeHtml:字符转换为html格式字符,函数形式:${__escapeHtml(str)}
- ${__escapeHtml("瓜田李下")} ==> "瓜田李下"
-
- # escapeOroRegexpChars:将正则表达式转换为java正则引擎能识别的表达式,函数形式:${__escapeOroRegexChars(value,name)}
- 函数包含两个参数:value正则表达式,name存储转换后的表达式(可选)
- ${__escapeOroRegexpChars(a*,name)} ==> 将a*转换为a\*
-
- # eval:返回引用的表达式的值,函数形式:${__eval(value)},value为引用的表达式
- ${__eval(${__BeanShell("hello "+"gtlx")})} ==> 返回 hello gtlx
-
- # evalVar:引用变量的值,函数形式:${__evalVar(var)},var为之前自定义的变量
- 自定义变量name = "瓜田李下", ${__evalVar(name)} ==> 返回 瓜田李下
-
- # FileToString:文件转换为字符串,函数形式:${__FileToString(fileName,encoding,name)}
- 参数说明:fileName文件全路径名、encoding文件编码、name存储转换后的字符串
- ${__FileToString(file,utf-8,value)} ==> 将file转换为字符串,用value存储字符串,可供后续sampler使用
-
- # intSum:整数求和,函数形式:${__intSum(num,...,value)}
- 参数说明:num一到多个,value存储计算后的值
- ${__intSum(1,value)} ==> 返回1
- ${__intSum(1,2value)} ==> 返回3
- ${__intSum(1,2,3,value)} ==> 返回6
-
- # longSum:长整数求和,同intSum
-
- # javaScript:返回javascript脚本执行的结果,函数形式:${__javaScript(expr,name)}
- 参数说明:expr为javaScript脚本,name存储计算后的值
- ${__javaScript(1+1,value)} ==> 返回2
-
- # jexl2、jexl3:计算jexl表达式,函数形式:${__jexl2(expr,name)}
- 参数说明:expr为jexl表达式,name存储计算后的结果
- ${__jexl2(vars.get("START.YMD",start))} ==> 返回 20220111
- ${__jexl3(2*3,start))} ==> 返回 6
-
- # log:返回输入的字符串信息,函数形式:${__log(str, level, throwable text, comment)}
- 参数说明:str为输出的字符串信息
- level:日志级别,可选值:OUT(打印到控制台及标准输出窗口,类似System.out)、
- ERR(打印到控制台及包标准输出窗口,类似System.err)、
- DEBUG、INFO(默认)、WARN、ERROR
- text:抛出的异常信息,可选
- comment:附加注释,可选
-
- # logn:与log类似,无返回结果
-
- # machineIP:返回主机ip,函数形式:${__machineIP(name)},name可选,用来存储返回的ip
- # machineName:返回主机名,函数形式:${__machineName(name)},name可选,用来存储返回的主机名
- # samplerName:返回当前取样名称,函数形式:${__samplerName(name)},name可选,用来存储返回值
- # TestPlanName:返回测试计划名称,函数形式:${__TestPlanName(name)},name可选,用来存储返回值
-
- # threadNum:返回线程号
- # time:返回当前时间,函数形式:${__time(format,name)},不指定格式默认返回毫秒数,name存储返回值
-
- # P:获取命令行中定义的属性,函数形式:${__P(pro,defaultValue)},pro为属性名,defaultValue为属性默认值
- # property:获取jmeter.properties中定义的属性,函数形式:${__property(pro,name)}
- pro为jmeter.properties中的属性name、
- name存储读取的值,可供后续sampler使用
-
- # setProperty:动态设置jmeter属性,函数形式:${__setProperty(name,value,true|false)}
- name属性名、value属性值、
- true|false是否返回原是值,默认false
-
- # split:拆分字符串,函数形式:${__split(str,name,delimeter)}
- str待拆分的字符串、
- name存储拆分后的字符串数组,如name=str,str_1可访问第一个数组元素
- delimeter分隔符,默认为逗号(,)
-
- # StringFromFile:从文件中读取数值,函数形式:${__StringFromFile(file,name,start,final)}
- file文件全路径名、name存储读取结果
- start、final文件名起始、终止序列号(D:\file1、D:\file2、D:\file3时指定文件)
- # random:生成随机数,函数形式:random(min,max,name),min最小值、max最大值、name存储返回的值
- # randomDate:生成随机日期,函数形式:randomDate(format,start,end),
- format日期格式,默认为yyyy-MM-dd,可选
- start开始时间,默认为今天,可选、
- end截止日期
- # randomString:生成随机字符串,函数形式:randomString(length,chars,name)
- length字符串长度
- chars字符串可选值,如"haa这个",可包含中文
- name存储返回的值
-
- # unescape:反转escape字符,函数形式:${__unescape(str)}
- # unescapeHtml:反转html格式字符,函数形式:${unescapeHtml(str)}
-
- # urlencode:url编码,函数形式:${__urlencode(str)}
- # urldecode:url解码,函数形式:${__urldecode(str)}
-
- # UUID:uuid算法生成的唯一字符串,函数形式:${__UUID}
-
- # V:执行变量表达式并返回结果,函数形式:${__V(expr,defaultValue)}
- 定义变量:a1=1,b1=1,${a1}${b1}可调用成功、${a${b1}}不能执行成功
- ${__V(a${b1})}可执行成功
-
- # regexFunction:正则表达式匹配上一个取样器的取样结果,并返回匹配结果
-
-
- # XPath:解析xml,返回匹配的值,函数形式:${__XPath(file,expr)},file为xml文件、expr为匹配表达式
- 表达式语法:
- /:根节点
- //:任意位置的某节点
- @:匹配属性
- *:匹配任何节点元素
- @*:匹配任何属性
- text():获取文本内容
-
- 示例:
- company:company所有的子节点
- /company:选取根节点company
- company/name:company下的所有name节点(直接子节点)
- company//name:company下的所有name节点(可不为直接子节点)
- //@type:选取所有名为type的属性
示例:CSVRead
person4.csv 文件
线程组:1个线程循环4次执行
线程组 ==> java请求
线程组 ==> 查看结果树:点击运行,查看运行结果
一个线程执行四次读取的都是相同的数据:第一行第一列数据
线程组:4个线程,每个线程执行1次
线程组 ==> java请求 2
线程组 ==> 查看结果树:点击运行,查看运行结果
四个线程,每个线程分别读取一行数据
线程组:1个线程循环执行4次
线程组 ==> java请求
线程组 ==> 查看结果树:点击运行,查看运行结果
添加${__CSVRead(*file,next())}后,单个线程也可循环换行读取数据
线程组:4个线程,每个线程执行一次,测试读取多列数据
线程组 ==> java请求:${__CVSRead(*file,next())}放在最后,表示之后读取下一行
线程组 ==> 查看结果树:点击运行,查看运行结果
线程换行同时读取第一列、第二列的数据
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。