7-Jmeter函数
用户参数
每次迭代更新一次
每次迭代更新一次
:勾选的话,在当前线程组中,所有取样器执行完一轮请求,才会更新一次,没有执行完不会更新值
应用场景
做性能测试时,先注册随机账号,然后再用账号登录,不需要提前准备测试数据
如果使用用户定义变量
的话,生成的手机号,一直不发生改变,只有第一次注册成功,之后都是注册失败。但是登录可以一直成功。
变量的引用与定义
变量的命名规则
字母、数字、下划线
函数助手
写法:双下划线开头+函数名称(区分大小写)+小括号+括号中以逗号分隔的参数
统计函数
1 | ${__counter(,)} |
新建一个「调试取样器」,并将名称修改为${__counter(,)}
修改「线程组」循环次数为5次
运行后查看「查看结果树」
统计函数类似元件-计数器
新建一个「计数器」
- 设置它的引用名称为
${d}
- 开始值为1
- 递增值为2
新建一个「调试取样器」,并将名称修改为${d}
运行后查看「查看结果树」
时间函数
${__time(,)}
:获取当前时间戳${__timeShift(,,,,)}
:时间位移${__dateTimeConvert(,,,)}
:时间戳转为本地时间${__RandomDate(,,,,)}
:随机时间
获取当前时间戳函数${__time(,)}
可能用的最多的就是通过这个函数,可以生成当前时间的时间戳,或者格式化当前时间。
常用于接口参数需要时间时的参数。
这个函数,有两个可填参数。
- 如果都不填,那么获得的是当前时间的时间戳;
- 如果填第一个参数,就是格式化当前时间,填写对应的时间格式,把当前时间用对应的格式返回;如果想要格式化时间精确到毫秒:
${__time(yyyy-MM-dd HH:mm:ss:SSS,)}
- 如果填第二个参数,就是把时间结果用一个变量接收
但是,不管怎么用,都只能获取当前时间。
时间位移${__timeShift(,,,,)}
这个函数,是离获取当前时间的 time 函数最近的一个函数,也是大家最容易与 time 函数混淆的函数。是时间位移函数。
常见于脚本中需要做时间偏移计算时用。
这个函数,它有五个可选参数:
如果所有的都不填,哪也是获取当前的时间戳;
第 1 个参数,是格式化时间,如果不填,时间戳精确到毫秒,如果填了,就格式化输出时间;
第 2 个参数,日期,上一个参数的格式返回这个日期,如:${__timeShift(yyyy-MM-dd,20200915,,,)}
如果未填,则为当前日期;
第 3 个参数,时间位移,以可选的正号‘+’ 和负号‘-’开头,负号‘-’开头,表示整个时间相减;再以大小写 p 为前缀,后面跟具体位移数和单位,单位’D’为天,’H’为小时,’M’为分钟, ‘S’为秒,而’T’必须在任意一个 H\M\S 出现之前,数字可以是正数或负数;天\时\分,前的数字为整数,秒,可以是小数。如在当前日期上增加 2 天 4 小数 6 分 10.234 秒:${__timeShift(yyyy-MM-dd HH:mm:ss:SSS,,p2dt4h6m10.234s,,)}
第 4 个参数,区域语言设置
第 5 个参数,定义存储结果的变量名
时间戳转为本地时间${__dateTimeConvert(,,,)}
将时间戳转换为本地时间。
常用于对接口响应结果中的时间戳进行转换。
这个函数,有四个参数
第 1 个参数,被转换的时间,为空时,表示当前时间戳,精确到毫秒
第 2 个参数,被转换时间的时间格式,上面时间的格式
第 3 个参数,转换后的时间格式,
- 例:
${__dateTimeConvert(09102020011034,MMddyyyyHHmmss,yyyyMMddHHmmss,)}
原始时间格式为:月日年时分秒,转换后为:年月日时分秒 - 例 2:
${__dateTimeConvert(1599723255000,,yyyyMMdd HHmmss,)}
一个精确到毫秒的时间戳,转换为:年月日 时分秒 格式时间
第 4 个参数,定义存储结果的变量名称
随机时间${__RandomDate(,,,,)}
它是随机日期函数。可以在一个随机日期之间,随机选一个日期返回。注意,这个函数操作的是 日期。
这个函数,有五个参数
第 1 个参数,日期格式,默认为 年-月-日
第 2 个参数,起始日期,随机日期区间起始值,包含起始值,空时,默认为当前日期
第 3 个参数,结束日期,随机日期区间结束值,不包含结束值
- 例:
${__RandomDate(yyyyMMdd,20200718,20200918,,)}
从一个日期格式为 yyyyMMdd 日期区间随机区一个日期
第 4 个参数,区域语言设置
第 5 个参数,定义存储的变量名称
简单加密
${__digest(,,,,)}
整数java运算
${__intSum(1,2,)}
执行脚本
__jexl3
:支持jython、groovy、javascript
打印日志
__log
获取当前IP
${__machineIP()}