20211025白板
-
课前内容:
- 参数:
- 用户定义变量:它是一个全局变量,在启动运行时,获取一次值,在运行过程中,不会动态获取值。
- 用户定义变量,在启动时获取一次值,在运行过程中,不会获取值,所以,如果,运行过程中,把用户定义变量的值改变了,但是,运行中,使用的值还是第一次获取值。
- 用户参数:它是一个局部变量,在启动运行时,获取一次值,在运行过程中,还会动态获取值。
- 用户定义变量:它是一个全局变量,在启动运行时,获取一次值,在运行过程中,不会动态获取值。
- 函数
- 函数: jmeter的封装好的 java方法
- jmeter自带函数:
- 函数助手
- 第三方扩展函数
- jmeter自带函数:
- 函数: jmeter的封装好的 java方法
- 参数:
-
函数:双下滑线开头、 函数名称严格区分大小写
1、 ${__counter(,)} 统计函数, 加1计算器, 只能实现 + 1
-
如果想要自定义递增的步长,使用 “ 计数器”元件,可以增加步长
- 有个最大值: 当运行获取的最大值,超过我们设置的最大值时候,又会从起始值开始
2、 jmeter进行 + - * / % :可以使用函数:${__jexl3(,)} ${__javaScript(,)} ${__groovy(,)}
- 有个最大值: 当运行获取的最大值,超过我们设置的最大值时候,又会从起始值开始
-
${__CSVRead(,)}: 进行csv数据文件读取, 不建议使用 它是一个阉割版csv读取功能
-
时间相关函数:
- ${__time(,)} 获取当前时间戳
- ${__timeShift(yyyy-MM-dd,p4d,)} 时间偏移函数
- ${__dateTimeConvert(,)} 时间格式转换
- ${__RandomDate(,)} 随机一个日期
-
${__digest(md5,123456,)} 加密函数。 就对123456进行md5加密
-
${__eval()}
-
${__groovy(,)} ${__jexl3(,)} 我们在使用if条件控制器时,就要使用这两个函数中任意一个
-
属性相关的函数:
- ${__setProperty(,)} 设置动态属性函数
- ${__P(,)} ${__property(,)} 获取属性
-
${__RandomString(4,qwertyuiopasdfghjk,)} KaTeX parse error: Expected '}', got 'EOF' at end of input: …\_RandomString({__Random(1,10,)},qwertyuiopasdfghjklzxcvbnm,)}
-
${__V(,)} 拼接函数
- user_1、 user_2、user_3
- KaTeX parse error: Expected group after '_' at position 6: {user_̲{__counter(,)}} 错的 这种写法不行,因为,变量引用时,变量名称中再使用函数时,没有被运行
- “mobile”:“KaTeX parse error: Expected group after '_' at position 12: {\_\_V(user_̲{__counter(,)},)}”
- KaTeX parse error: Expected group after '_' at position 12: {\_\_V(user_̲{__counter(,)},)}===值
- 运行V函数,函数的参数:(user_ _ _ c o u n t e r ( , ) , ) 参数 1 : u s e r _ {\_\_counter(,)},) 参数1: user\_ __counter(,),)参数1:user_{__counter(,)} 参数2:
- 运行参数1:
- 运行函数 ${__counter(,)} 返回数字
- user_1 user_2 user_3
- 运行参数1:
- ${user_1} ${user_2} ${user_3}
- 运行V函数,函数的参数:(user_ _ _ c o u n t e r ( , ) , ) 参数 1 : u s e r _ {\_\_counter(,)},) 参数1: user\_ __counter(,),)参数1:user_{__counter(,)} 参数2:
- 一定要搞明白: 使用的频率非常高
- 在后置处理器提取多个值,进行关联的时候,会要使用
- 在jdbc从数据库返回多值时,也会使用
- KaTeX parse error: Expected group after '_' at position 12: {\_\_V(user_̲{__counter(,)},)}===值
-
-
第三方函数:
- MD5
- baseencode64
-
关联:
- 前面接口的返回信息中,有动态值,而这个动态值,要用于后续接口的传入参数中,这个时候就要用到关联
- 返回信息: 我没有说,一定是response-body。 它不一定是response-body
- 提取注册中的手机号码和gqid
- 前面接口的返回信息中,有动态值,而这个动态值,要用于后续接口的传入参数中,这个时候就要用到关联
-
后置处理器:
- json提取器: 当你的数据为json格式时,优先选择使用json提取器
- json表达式写法:
- $.节点名称.二级节点名称 ------绝对路径的写法
- $.data.lists[*].typeDesc
- $…节点名称 -----相对路径的提取
- $.节点名称.二级节点名称 ------绝对路径的写法
- 一个json提取器写多个json提取式:
- 多个时,用英文分号,作为分割符
- 变量名称、取数数字,之间也要式使用分号分割多个
- 此时,一定要用分号分割对应数据的默认值,默认值可以自己定义
- json提取式,返回的结果,有多个时, 数字0 代表从多个中任意取1个, 具体取哪一个时候,从1开始
- 用json提取器定义这个变量名称,是一个局部变量,不能直接跨线程组被引用
- json表达式写法:
- json提取器: 当你的数据为json格式时,优先选择使用json提取器
{“user”:“user1”,“role”:“[{\“js\”:\“admin\”,\“msg\”:\“超管\”}]”}
正则提取器