jmeter 函数


jmeter 函数

                

           

***************

函数

           

作用:实现表单内容参数化、数据运算、字符转换等

             

函数助手(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())}放在最后,表示之后读取下一行

           

                  

线程组 ==> 查看结果树:点击运行,查看运行结果

           

线程换行同时读取第一列、第二列的数据

              

               

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值