记录一些使用过或常用的函数
1、_Random函数 在指定的范围内取随机数字
形式:${__Random(1,999,id)} ,后续脚本中可使用${__Random(1,999,id)}或${id},取值范围一致
1)随机生成数字
2)添加多条数据记录且某些字段需要唯一性时使用
3)3个参数,前2个必填,最后1个非必填
2、 __chooseRandom函数 从指定的范围里面取值,为枚举随机数
形式:${__chooseRandom(a,b,c,id)},后续脚本中可使用${__chooseRandom(a,b,c,id)}或${id},取值范围一致
1)在指定的范围内取字符
2)2个参数,第1个必填,最后1个非必填
3、__CSVRead函数 从文件中读取数据
1)新建一个txt文件,文件中每个数据一行,数据中间用英文逗号分隔,见下图
2)2个参数,第一个参数为文件的绝对路径,第二个为数据所在列,注意第一列为0
举例,如上图数据为用户名和密码,使用方式如下:
用户名:${__CSVRead(D:\Program Files (x86)\apache-jmeter-4.0\bin\scripts\yuyuetijian\user.txt,0)}
密码:${__CSVRead(D:\Program Files (x86)\apache-jmeter-4.0\bin\scripts\yuyuetijian\user.txt,1)}
4、__RandomDate函数 生成指定范围内的随机日期
形式如:${__RandomDate(,,2020-08-29,,)}
1)5个参数,只有第三个参数必填,为结束日期;
2)第二个参数为开始日期(默认为系统当天日期),第三个参数为结束日期,常用于指定开始日期和结束日期之间的随机日期;
3)注意第一个参数为格式,如果更改日期格式,则开始和结束日期也需要随之更改;
4)具体参数解释如下:
- Format string for DateTimeFormatter (optional) (default yyyy-MM-dd):日期格式化方法,默认为yyyy-MM-dd;
- Start date (optional) (default: now):为开始日期,格式必须和日期格式化方法一致,如格式化方法不填,则此处格式需为2018-02-03,如不填则默认为现在;
- End date:和Start date类似,但是此项必填;
- String format of a locale (ex: fr_FR , en_EN) (optional):日期相关的地区信息,可以不填;
- Name of variable in which to store the result (optional):参数名称,也可以不填;
5、__time函数 将当前系统时间转换为需要的格式输出
形式:${__time(yyyy-MM-dd HH:mm:ss:SSS,)} ${__time(yyyy-MM-dd HH:mm:ss,)}
1)2个参数,均非必填,第二个参数(变量名称)不常用
2)第一个为时间格式,默认则生成unix时间戳格式,${__time(,)},如不需要毫秒级的时间戳,可以使用${__time(/1000,)}
3)HH:mm:ss HH大写为24小时格式; hh:mm:ss hh小写为非24小时格式;
6、__timeShift函数 可对时间进行加减转换,为基准时间加减位移时间
形式:${__timeShift(yyyy-MM-dd,,P1D,,)}
1)5个参数,均为非必填,第四个参数和第五个参数(变量名称)不常用;
2)第一个参数为时间格式,默认为unix时间戳格式,可修改为如yyyy-MM-dd HH:mm:ss:SSS
3)第二个参数为基准时间,默认为当前系统时间
4)第三个参数为位移时间,可以对天、小时、分、秒进行加减;
- 首字母:如果只对天进行加减,则首字母为P;如果对时分秒加减,则首字母为PT;如果需要天和时分秒一起加减,则为P天 T时分秒格式;
- 符号:增加时可以不使用符号,也可使用+;减少时使用 - 号;
- 加减天、小时、分、秒对应的字母为D、H、M、S
举例如下:
1)仅对天加减: ${__timeShift(yyyy-MM-dd,,P1D,,)} 代表增加1天
${__timeShift(yyyy-MM-dd,,P-1D,,)} 代表减少1天
2)对时分秒加减:${__timeShift(yyyy-MM-dd HH:mm:ss,,PT-6H10M10S,,)} 代表减少6小时,增加10分钟,增加10秒。
3)对天和时分秒一起加减:${__timeShift(yyyy-MM-dd HH:mm:ss,,P2DT-6H10M10S,,)} 代表增加2天,减少6小时,增加10分钟,增加10秒。
7、__counter函数 计数器
1)2个参数,第一个参数非必填(默认为true),第二个参数非必填(变量名称)
2)第一个参数为true,则每个用户单独计数,为false,则全局计数;
形式如:${__counter(true,)} 每个用户单独计数,如2个线程,循环30次,则每个线程的计数最大为循环数 1/2/3...30
${__counter(false,)} 全局计数,如2个线程,循环30次,则计数为线程数*循环数 1/2/3...60
如何使用不太清楚,网上有说可以用在Java请求中,如下图:
8、机器相关
${__machineName()} 机器名称
${__machineIP()} 机器ip
9、__javaScript函数(不会用)
形式:${__javaScript(new Date(),d1)}
函数__javaScript可以用来执行JavaScript代码片段(非Java),并返回结果值。JMeter的_javaScript函数会调用标准的JavaScript解释器。JavaScript会作为脚本语言使用,因此测试人员可以做相应的计算。
10、函数组合使用
例如 ${__lowercase(${__machineName()},)}
以上内容已转移到有道云笔记~