
参数关联(即接口依赖),例如场景1:系统的其他功能需要登录接口返回的token或者sessionid(后面的接口需要用到前面接口返回的信息)
这就需要提取上个接口返回信息中的数据。
①将返回的数据使用json path tester转化为json格式,使用JSON Path Expression,提取返回json数据的表达式有绝对路径和相对路径之分:
绝对路径:$变量名
相对路径:$变量名
如果是嵌套的数据,使用一级级往里面取就行了,例如:{"key1":{"key2":{"key3":"xxxxx"}}},提取式:$key1key2key3,如果是这种格式的{"data":[{"key1":"value1","key2":"value1"},
{"key3":"value1","key4":"value1"}
]}
提取表达式需要根据下标取提取:$data[下标值]key
上面的数据格式如果使用绝对路径提取表达式写为:$data[1]key3 相对路径的提取表达式写为:$key3
②将数据提取出来后,在需要依赖上个接口数据的接口请求中,添加--后置处理器--JSON取样器
③ 提取单个值: 在需要提取返回数据的接口下添加json提取器(例如充值接口需要提取登录接口中需要的数据,那么就需要在登录接口中添加json提取器,自己第一次将json提取器添加到充值接口中,导致提取不到数据,实际就是json 提取器添加错了)
将json提取器添加到登录接口,就可以提取登录后的token值了(注意:要提取哪个接口的返回的数据,就添加在哪个接口下)
json表达式相对路径和绝对路径,第一种方式$datatoken_infotoken ;第二种$token
将登录接口中提取的token值,将表达式放在充值接口中,下次充值接口发送请求就会携带token信息
充值接口发送请求后会携带token信息,请求成功
④ 提取多个值:提取表达式之间使用;间隔开,一定要设置默认的值,不然会导致数据提取不出来,如果取不到值那么就会返回设置的默认值。
2正则表达式提取器
经常有接口可能返回这种类型数据,我们需要提取data中的某个key的值,因为data对应的值是字符串格式的,那么这时候就只能使用正则表达式提取器提取其中的信息。
例如要提取返回相应数据中的code的值
在正则表达式提取器中,设置引用名称,填写正则表达式,模板:$1$代表去第一个括号的值
提取多个值
提取成功,但是提取的两个值进行拼接后赋值给了recode,如果要将两个值单独拿出来使用,使用:变量名_g1,变量名_g2方式获取值,使用recode_g1和recode_g2,这两个数据是将recode的数据进行拆分所以可以单独使用。
应用使用的cookies符合兼容性规范的话,JMeter的标准cookies是可以自动管理的
如果应用没有指明cookies版本,同时又使用了特殊符号,JMeter调用的>
将一个常量写成变量的形式,每次调用参数获得不同的数据。
PS: 这里要说下Cookie,在后面的参数化过程中发现登录接口请求头里要携带cookie;我一直的误解就是只有登录才有cookie产生,其实是不对的, 一般的cookie是会话被创建时就产生,关闭后就消失 ;可以随便访问项目的网页获取到cookie,然后想办法将cookie加到请求头里去~
1、CSV控制-CSV DATA Set Config
线程组 -> 新建请求 ->参数用变量代替 ,格式${变量名}
新建EXCEL文件,写入测试数据-> 另存为csv文件的格式;
线程组 ->添加配置元件->CSV DATA Set Config->在配置元件里输入csv的绝对地址 ->若CSV不含表头,则在CSV数据文件设置里输入表头变量;反之,则不添加;
2、用户自定义变量
比如有登录接口和获取token的接口,都需要输入用户名和密码,如果我在每个接口请求参数都输入一次,相当于输入了两次;那么,可以使用自定义变量,将用户名和密码的值存在一个变量里,后续的接口需要时直接调用参数即可,减少重复输入的次数。具体 *** 作如下:
线程组-> 添加配置元件->选择用户自定义变量->添加变量名及对应的值(key&value);
线程组 -> 新建请求 ->参数用变量代替,格式为${变量名},调用变量值;
PS: 用户定义变量的所有数据只会初始化一次,不管你多少线程,循环多少次,它的值是不变的(即同一个变量的值写死,不能改变)。 用户自定义变量作用域不同,表示的含义也有区别;放在线程组外,表示全部变量;放在线程组内表示局部变量。
3、用户参数
在调试脚本的时候,可以使用前置处理器中的用户参数组件进行数据的提供,在该数据中可以使用固定值也可以使用变量值。
线程组-> 添加前置处理器->选择用户参数->添加变量名,并输入多个对应的值
每次迭代更新一次:如果选中该选项,则参数的值在每个迭代中保持不变,在新的迭代开始时取下一个值。
PS:在使用用户参数时,如果有n个值,需要设置线程数=n,若设置循环为n,只会调用第一个值执行n遍。
4、函数助手
函数助手里内置了多个函数,如__Random或${__CSVRead(,)}等可以按需求使用不同的功能函数;
面板-> 选项-> 函数助手对话框-> 根据需要选择不同的函数-> 设置范围及变量名->后续接口调用。
${__CSVRead(,)}可以实现读取CSV数据,()里逗号左边是CSV路径,右边是CSV里存放的变量的索引;索引从0开始依次增加1,如 ${__CSVRead(D:\jmeter\loginstxt,0)}。 注:这里的CSV文件就不要表头了。
用户自定义变量的值写死,不能改变;而用户参数,可以引入函数助手,使得同一变量有不同的变量值。
对接口进行压力时,很多时需要用户登陆之后才能 *** 作,比如抽奖
步骤:
1新增登陆的>
以上就是关于jmeter的参数关联(参数依赖)全部的内容,包括:jmeter的参数关联(参数依赖)、jmeter 载入的cookie文件在哪、浅学Jmeter性能测试:参数化等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)