Jemeter线程间传递变量

2019-08-03  本文已影响0人  纤_叶芝秋

一、背景

大多数接口都会有验证信息(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()}
④创建结果树

路径:【线程组】-【添加】-【监听器】-【察看结果树】
解释:新建结果树用于察看最终接口请求结果是否正确

上一篇 下一篇

猜你喜欢

热点阅读