一、背景
大多数接口都会有验证信息(Token等)来验证用户身份,按照我们自己的理解,每次压测时只需要请求一次获取到值,再提供给其他接口使用。例如并发100个线程,循环10次,那就需要登录100次(和循环次数无关),但是这样根本不符合我们的预期,明明登录一次就可以为什么还要请求100次接口。所以把登录模块放到一个线程组里面,然后把获取登录的token放置到一个变量里,再把其他接口内容放到另外的线程组里,需要token时再引用变量即可。这样就实现了请求一次验证信息,供其他接口使用多次。
二、创建变量
此处设置一个实际可能遇到的业务背景,来方便理解,场景:新建1000条测试单据
1、线程设置
请在首页中勾选以下选项:
独立运行每个线程组(例如在个组运行结束后启动下一个)
2、创建获取Token的线程组
①创建线程组
路径:【测试计划】-【添加】-【线程(用户)】-【线程组】
线程数:1
Ramp-Up时间(秒):1
循环次数:1
②创建HTTP请求:
路径:【线程组】-【添加】-【取样器】-【HTTP请求】
协议:
服务器名称或IP:
端口号:
方法:
路径:
内容编码:utf-8
填写以上必要信息
③创建JSON提取器
路径:【HTTP请求】-【添加】-【后置处理器】-【JSON提取器】
解释:JSON提取器,顾名思义,即为将Token的值提取出来,以便下一步的设置为变量
Names of created variables:token
JSON Path expressions:$.access_token
#$.是取了整个对象(数组)中字段名access_token对应的变量值(取字段名)
#${}是取变量值
#字段说明:
#Names of created variables:获取的变量名称,后面引用该参数时,使用${id_1}
#JSON Path expressions:获取响应中字段的表达式,data是字典,result是个List,获取第一个id的表达式为$.data.result[0].id
#Match No.(0 for Random):匹配哪个,可为空即默认第一个
#Default Value:未取到值的时候默认值
④创建全局变量
路径:【HTTP请求】-【添加】-【后置处理器】-【BeanShell PostProcessor】
解释:使用后置处理器BeanShell PostProcessor(用于传递数据)
#首先设置参数字段
Parameters:${token}
#再设置全局变量,输入到Script中
${__setProperty(requestToken,${token})};
#requestToken为变量名,其他字段可引用requestToken,${token}为字段值
以上四步已将Token值取出,值为${token},赋值给requestToken。
三、使用此变量
①创建线程组
路径:【测试计划】-【添加】-【线程(用户)】-【线程组】
线程数:1
Ramp-Up时间(秒):1
循环次数:1000
②创建HTTP请求
路径:【线程组】-【添加】-【取样器】-【HTTP请求】
协议:
服务器名称或IP:
端口号:
方法:
路径:
内容编码:utf-8
填写以上必要信息
③创建HTTP请求信息头管理器
路径:【HTTP请求】-【添加】-【配置原件】-【HTTP请求信息头管理器】
添加两行信息
Content-Type:application/json
Authorization:bearer ${__P(requestToken,)} #取出字段值requestToken的值
#注:${__P()}函数原型为${__Property()}
④创建结果树
路径:【线程组】-【添加】-【监听器】-【察看结果树】
解释:新建结果树用于察看最终接口请求结果是否正确
网友评论