jmeter函数

__Random产生一个随机数
#${__Random(起始,终止,变量名)}
${__Random(0,10, num)}
引用变量:${num}
__RandomDate指定时间段产生一个日期
#${__RandomDate(时间指定格式(默认yyyy mm dd),起始时间,终止时间,语言,变量名)}
${__RandomDate(yyyy MM dd,2025 09 25,2026 09 05,zh_CN,date)}
引用变量:${date}
__RandomString指定的字符产生一个随机字符串
#${__RandomString(字符串长度,指定生成字符串的字符来源,变量名)}
${__RandomString(6,a12dgjfhl, str)}
引用变量:${str}
__setProperty设置属性
#${__setProperty(引用变量名,属性值,是否返回原始值)}
${__setProperty(key,value,true)}
引用变量:${__P(key)}
例子:${__setProperty(token,${new_token})}   ${__P(token)}

在Jmeter 中,属性是全局生效的,可以动态设置
但变量是每个线程独有的
所以通过设置属性可以实现跨线程传参,而不是通过变量的方式
通过json提取器提取上游接口中的值,并结合BeanShell后置处理器设置属性,实现跨线程传参

__Property设置属性
#${__Property(属性名,变量名,默认值)}
${__property(key,var,default)}
引用变量:${var}
__time时间格式
#${__time(时间格式,引用变量名)}
${__time(yyyy-MM-dd, Var)}
引用变量:${Var}

YMD = yyyyMMdd
HMS = HHmmss
YMDHMS = yyyyMMdd-HHmmss

__MD5指定字符串MD5加密返回(加密后是 32位小写)
#${__MD5(字符串,引用变量名)}
${__MD5(123,Var)}
引用变量:${Var}
__TestPlanName测试计划名称
#${__TestPlanName}
返回的格式:TestFunctionDemo.jmx
__strLen判断指定字符长度
#${__strLen(123456,)}
返回的格式:6
__StringFromFile从文本文件读取字符串
#${__StringFromFile(读取文件名,引用变量名,初始序列化,最终序列化,读取文件次数)}
${__StringFromFile(C:\Users\user\Desktop\test1.xlsx,data,1,2,2)}
读取test1.xlsx文件内容2次
${__StringFromFile(C:\Users\user\Desktop\test#.xlsx,data,,1,5)}
读取test1.xlsx~test5.xlsx文件内容
__split分隔符
#${__split(字符串,引用变量,分隔符(默认,))}
${__split(123\,3123,var)}
返回格式:123 3123
__substring从字符串中获取指定范围的子串
#${__split(字符串,开始索引,结束索引,引用变量)}
[开始索引默认0,结束索引不包含)
${__substring(12314124,2,5,var)}
返回格式:var = 314
__isDefined 判断变量是否存在
#${__isDefined(变量名)}
${__isDefined(var)}
返回格式:1代表存在,0代表不存在
__BeanShell 执行beanshell脚本并返回结果
#${__BeanShell(beanshell脚本,存储脚本返回结果的变量名)}
${__BeanShell(123*456,name)
例子:
${__BeanShell(vars.put("test"\,"${__Random(1000,5555)}"),)}设置jmeter变量
${__BeanShell(vars.get("test"),)}读取jmeter变量
${__BeanShell(props.put("test"\,"1234"),)}设置jmeter属性
${__BeanShell(props.get("test"),)}读取jmeter属性
__counter 计数器
#${__counter(是否全局生效,存储脚本返回结果的变量名)}
是否全局生效,默认为False,True标识每个线程都有独立的counter
${__counter(,)}
__char 给定字符转换成Unicode字符
#${__char(要转换为 Unicode字符的十进制数字)}
0x开头,为十六进制数;0 开头,为八进制数
${__char(13,10)}
__intSum 计算两个或多个整数值的和
#${__intSum(整数,整数,,,引用返回值的变量名)}
${__intSum(1,2,3,sum)}
返回格式:sum=6
__longSum 计算两个或多个长值的和
#${__longSum(整数,整数,,,引用返回值的变量名)}
值不在 -2147483648 到 2147483647 之间,就需要用 __longSum 代替 __intSum
${__longSum(2147483648,2147483648,sum)}
__digest 特定哈希算法中返回加密的值
#${__digest(加密算法类型,需要加密的字符串,盐值,大小写,引用返回值的变量名)}
常见加密算法:MD2、MD5、SHA-1、SHA-224、SHA-256、SHA-384、SHA-512
${__digest(MD5,123456,,,)}
等价于${_MD5(123456)}
__V 嵌套函数引用
#${__V(执行变量名表达式,默认值)}
${__V(123_${_Random(1,5)})}
返回格式:123_2
__chooseRandom 从指定范围内取值
#${__chooseRandom(指定字符串1,指定字符串2,引用返回值的变量名)}
${__chooseRandom(10,20,Rand)}
返回格式:Rand=20
__env 获取环境变量的值
#${__env(环境变量名称,引用返回值的变量名,默认值)}
${__env(JAVA_HOME,var,default)}
返回格式:E:\java1.8
__FileToString 读取整个文件
#${__FileToString(文件名,字符集,返回值引用名称)}
${__FileToString(C:\Users\user\Desktop\test1.xlsx,,)}
__eval 执行变量名表达式并返回执行结果
#${__eval(需要执行的变量和函数)}
${__eval(${key}213${_Random(1,5)})}
等价于${__V(${key}213${_Random(1,5)})}
返回格式:key为a,a2134
__if 判断给定条件是否成立
#${__if(实际值,预期值,相等返回值,不相等返回值,引用变量名)}
${__if(3,3,2,4,)}返回格式:2
${__if(中文,中文,true,false,)}返回格式:True
__timShift 以指定格式返回日期,并添加指定秒、分、时、天
#${__timeShift(日期格式,要转换的日期,要移动的时间数,语言,存储结果的变量名)}
要移动的时间数:
"   PT20.345S" -- 增加 20.345 秒
    "PT15M"     -- 增加 15 分钟
    "PT10H"     -- 增加 10 小时
    "P2D"       -- 增加 2 天
    "P2DT3H4M"  -- 增加 2 天 3 小时 4 分钟
    "PT-6H3M"    -- 减少 6 小时,同时增加 3 分钟
    "-PT6H3M"    -- 减少 6小时 3 分钟
    "-PT-6H+3M"  -- 增加 6 小时,同时减少 3 分钟
${__timeShift(yyyy/MM/dd HH:mm:ss, 2020/12/05 13:39:16, PT20.345S,,)}
当前时间:2020/12/05 13:39:16
返回结果:2020/12/05 13:39:36
posted @ 2025-09-25 22:54  嗑嗑  阅读(14)  评论(0)    收藏  举报