美文网首页
Jemeter线程间传递变量

Jemeter线程间传递变量

作者: 纤_叶芝秋 | 来源:发表于2019-08-03 00:53 被阅读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()}
④创建结果树

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

相关文章

  • Jemeter线程间传递变量

    一、背景 大多数接口都会有验证信息(Token等)来验证用户身份,按照我们自己的理解,每次压测时只需要请求一次获取...

  • jemeter测试FTP服务器文件上传下载功能

    初学jemeter,找个例子练手。 1.打开jemeter,创建一个线程组 IP 为你FTP服务的IP Remo...

  • 2022-06-23 Python 全局变量管理模块

    Python 多文件间传递全局变量参数 起因 在工程中遇到需要退出子线程 于是在线程中加入标志位来判定是否继续运行...

  • 3-SynchronousQueue

    概述 引入 在进行多线程编程时经常会有进行线程间的数据传递需求,一种是通过定义一个线程安全的共有变量实现,也可以通...

  • Jmeter中不同线程组的参数传递

    Jmeter跨线程组参数传递 引言:Jmeter中再同一个线程组中,参数传递可以使用 ${变量名} 的方式去传递参...

  • 一篇面试了无数公司后总结的面试题,学完面试不上我把工资卡给你

    1、什么是线程局部变量? 线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Java 提供...

  • Flink通信机制

    flink内部通信机制 Operator间的数据传递本地线程数据传递远程线程数据传递同一线程的Operator数据...

  • Jemeter线程组

    线程组顾名思义,线程组表示JMeter在测试期间将使用的线程组。 线程组元素是任何测试计划的起点。 线程组提供的控...

  • Handler详解

    Handler详解 举例 线程间传递数据(主线程跟子线程、两个子线程) 简介 一套android消息传递机制。在多...

  • Java面试最常被问到的基础知识

    1.什么是线程局部变量?(答案) 线程局部变量是局限于线程内部的变量,属于线程自身所有,不在多个线程间共享。Jav...

网友评论

      本文标题:Jemeter线程间传递变量

      本文链接:https://www.haomeiwen.com/subject/rrwrdctx.html