jmeter 系统函数整理
大家都知道在Jmeter使用中,不是每个功能都需要自己去吭哧吭哧写beanshell代码的,在使用Jmeter时,此工具为大家已经封装好了很多好用的系统级函数,可以直接调用来实现你想要的功能。本篇将整理下在Jmeter中常用的系统函数使用,以方便于日常使用时查找。
1.${__counter(,)}:计数器函数,每次调用值+1,从1开始
第一个参数:
True:如果希望每个虚拟用户计数器保持独立,与其他用户计数器相区别;
False:全局计数器
第二个参数:存储结果的变量名称。引用方式:${变量名}
2.${__CSVRead(,)}:csv文件读取函数,是从外部读取参数,__csvRead函数可以从一个csv文件中读取多个参数。
CSV file to get values from | *alias :要读取文件的路径
CSV文件列号| next| *alias :要从第几列开始读取,第一列为0
示例:
${__CSVRead(d:\\test.csv,0)} --从test.csv中取第1列的值
${__CSVRead(d:\\test.csv,${__Random(1,3,)})} --从test.csv中随机取第2-4列的值
3.${__intSum(,,)}:整型相加函数
要添加的第一个整数:第一个整数
要添加的第二个整数:第二个整数,更多整数用,间隔
Name of variable in which to store the result (optional):保存到的变量名
示例:${__intSum(1,2,3,4,param)} #求1+2+3+4的和 保存到param变量中
4.${__longSum(,,)}:获得长整型数之和
First long to add:第1个数
Second long to add - further longs can be summed by adding further arguments:第2个数,多余其他数用,间隔
Name of variable in which to store the result (optional):保存的变量名
示例:${__longSum(1,13,12,par)} #求1+13+12的和存到par变量中
5.${__machineName()}:得到当前运行机器名
6.${__P(,)}:自定义jmeter属性和属性值,或者设置属性默认值
示例:${__P(remote_hosts,1)}:设置remote_hosts属性的值默认为1,如果没有remote_hosts属性则返回默认值1,如果jmeter中存在此属性,则返回属性的值。修改默认属性值可以修改1的值就行
7.${__property(,,)}:同${__p(,,)}类似,前者p只设置默认值,后者property是设置默认值后再保存另一个变量中
参数1:参数名称:
参数2:Name of variable in which to store the result (optional):保存的变量名
参数3:默认值
示例:
${__property(param,first,200)}:设置param参数的默认值为200,同时保存到first变量中,其他地方可以用${first}引用
8.${__setProperty(,,)}:设置jmeter的属性值,全局变量赋值
参数说明:
Value of property:属性值
Return Original Value of property (default false) ?:返回初始值,默认false
示例:
${__setProperty(newresult,${result},)} :把局部变量result设置为全局变量newresult
提取全局变量值:${__p(newresult)} 等同于${__property(newresult)}
9.${__RandomFromMultipleVars(,)}:提取随机值,从用户定义的多个值里随机取一个
参数说明:
Source Variable(s) (use | as separator):源变量名,多个用 | 间隔
Target Variable:目标变量,即保存后的变量名
示例:
${__RandomFromMultipleVars(var1|var2|var3,testTarget)}:从变量var1、var2、var3随机获取一个变量的值,存放到Target变量里
注意:此处的var1 |var2 |var3 是变量名,非变量的值
10.${__RandomString(,,)}:生成多个随机字符
参数说明:
Random string length:随机字符串的长度
Chars to use for random string generation:生成多个随机字符的源字符串
Name of variable in which to store the result (optional):保存的变量名
示例:${__RandomString(3,hello world,param)}
在hello world字符串中随机生成3位的字符,放到param变量中。
11.${__samplerName()}:获取请求名
12.${__Random(,,)}:随机函数
参数说明:
参数1:为最小值
参数2:为最大值
参数3:为存储的变量名
示例:${__Random(X,Y,Z)} 获取X到Y之间随机的数值,存放到Z变量中
13.${__split(,,)}:分离函数
参数1:为需要分割的变量或者String,
参数2:为存储的变量名
参数3:为分割符
示例:${__split(X,Y,Z)}:X为需要分割的变量或者String,Y为存储的变量名,Z为分割符
14.${__TestPlanName}:获取测试计划名
15.${__threadNum}:获取测试计划的线程数
16.${__time(,)}:时间函数
常见时间格式示例:
${__time(,param1)} :1450056496991 //无格式化参数,返回当前毫秒时间后赋值给param1变量
${__time(yyyyMMdd, param1)}:
20151214 //返回年月日 后赋值给param1变量
${__time(HHmmss, param1)}: 092816 //返回时分秒 后赋值给param1变量
${__time(yyyyMMdd-HHmmss, param1)}:20151214-092816 //获取时间 后赋值给param1变量
${__time(yyyy-MM-dd HH:mm:ss,)}: //获取系统当前时间转换为年-月-日 时:分:秒格式
${__longSum(${__time},-3600000, param1)}: //获取一小时前的时间戳后赋值给param1变量
17.${__urldecode()}:对于测试中返回的中文进行URL解码
示例:${__urldecode(%E4%BD%A0%E5%A5%BD)}:将给定字符串解码为中文显示
18.${__urlencode()}:对于测试中提交的中文进行URL转码
示例:
${__urlencode(你好)} :编码后:%E4%BD%A0%E5%A5%BD
19.${__UUID}:唯一标识码,生成一个随机字符串,用于某些参数需要唯一值的情况
uuid格式如:8e9464d2-4561-453e-8005-ad0a44507640
20.${_StringFromFile(,,,)}:从一个文件中读取一个字符串,如果读取或者打开这个文件发生错误时,将返回“ERR”字符串
参数说明:
参数1:输入文件的全路径:输入读取文件的绝对路径+文件名
参数2:Name of variable in which to store the result (optional):存储结果的变量名称
参数3:Start file sequence number (opt):初始序列号,即读取文件的序列号,第几个文件
参数4:Final file sequence number (opt):结束序列号,即读取文件的序列号,第几个文件
示例:
${_StringFromFile(d:\test.dat,,,)}:读取d盘test.dat文件的内容,循环一次读取一行
可以读取多个文件,如:
${_StringFromFile(d:\test#.dat,content,1,2)}:从d盘下读取test开头的第1和第2个dat文件内容存放到content变量中
21.${__evalVar()}:用来执行保存在变量中的表达式,并返回执行结果
示例:比如某csv文件中内容:
user,name,time
test1,小名,${__time(,)}
那么在jmeter中读取csv文件中time列,正常读取用${time}肯定会报错,因为字段值有特殊符号,这时候在jmeter中就需要用到此函数,调用如下:
${__evalVar(time)},这样就可以读取到time列的值了
所以此方法一般可用于csv文件中参数值存在引用的时候
22.${__XPath(,)}:使用xpath方式提取文件内容
示例:
${__XPath(xmlFile,//a[b='ccc'])} :从xmlFile文件中根据表达式//a[b='ccc']提取内容
23.${__log(,,,)}:写入日志文件
参数1:String to be logged (and returned):日志信息
参数2:Log level (default INFO) or OUT or ERR:日志级别
参数3:Throwable text (optional):异常文本
参数4:Additional comment (optional):额外备注
示例:${__log(日志信息,INFO,有异常出现,这是处理异常的日志)}