Jmeter线程组传参原理解析

这篇文章主要介绍了jmeter线程组传参原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下

背景介绍:

使用jmeter做登录和搜索接口的测试:

登录接口请求头为:Content-Type: application/x-www-form-urlencoded; charset=UTF-8

搜索接口请求头为:Content-Type: application/json; charset=UTF-8

同时,搜索的请求头中需要用到登录接口返回值中的token值。

基于上述情况,在jmeter中新建了两个线程组,这时就需要考虑线程组之间的参数怎么传递,本博客中使用的只是其中的一种方法。

=================================================================================================================

操作步骤:

新建两个线程组,一个登录,一个搜索

登录线程组,HTTP请求后,增加一个正则表达式提取器

(登录接口token返回值为:"data":{"token":"b19d16a0-265d-42a7-88cc-54e6150159d3","maxInactiveInterval":0})

正则表达式内容为:

新增一个后置处理器,将token值存储:

后置处理器代码为:

 String token = vars.get("token");
 props.put("lg_token",token);
 log.info("***token****:"+token);

搜索线程组:

1、增加前置处理器,获取登录接口中存储的token值:

代码为:

 String lg_token = props.get("lg_token");
 vars.put("lg_token",lg_token);
 log.info("####lg_token###:"+lg_token);

2、新增HTTP信息头管理器,值为:

3、添加HTTP请求,正常输入请求地址和参数,运行即可

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持我们。

(0)

相关推荐

  • jmeter 在linux服务器的安装和运行教程图解

    linux环境下使用就meter进行压力测试: 1.linux环境部署:在Linux服务器先安装jdk: 2.以jdk-8u172-linux-x64.tar.gz为例: 下载地址:http://www.oracle.com/technetwork/java/javase/downloads/index.html 1.根据自己的服务器的机型选择:小编的是64位的,这里就以64位为例: 3.然后把下载tar.gz文件发送到服务器上: 这里我们可以使用xshell,连接服务器,同时也要下载xftp来

  • python Django编写接口并用Jmeter测试的方法

    一.环境准备 python3.6.7 Pycharm 二.创建项目 我这里是在Django项目中新建了个APP,目录结构如下图所示: 那么怎么在已有的Django项目中新建APP并进行配置呢: 2.1.新建app a.可以在终端输入命令:python manage.py startapp myapp(这里myapp是指你自己app的名称),如下图所示: b.也可以在pycharm中找到Tools-->Run manage.py Task, 在弹出的命令框中输入:startapp myapp(这里

  • python利用JMeter测试Tornado的多线程

    JMeter的简介   JMeter是Apache组织开发的基于Java的压力测试工具.用于对软件做压力测试,它最初被设计用于Web应用测试,但后来扩展到其他测试领域. 它可以用于测试静态和动态资源,例如静态文件.Java 小服务程序.CGI 脚本.Java 对象.数据库.FTP 服务器, 等等.   JMeter的下载网址为:https://jmeter.apache.org/download_jmeter.cgi,下载前请先确定电脑中安装了Java,下载完毕后点击bin文件夹下的"meter

  • Jmeter连接数据库过程图解

    1.下载MySQL的jdbc驱动(mysql-connector-java-5.1.28.jar),将其放到 ...\apache-jmeter-3.3\lib\ 目录下 驱动下载地址:https://dev.mysql.com/downloads/connector/j/ 2.在测试计划下添加驱动地址 3.选择线程组-添加-配置原件-JDBC Connection Configuration 4.配置JDBC Connection Configuration Variable Name:该名称

  • jmeter如何自动生成测试报告

    1.准备.jmx脚本文件 2.在脚本文件路径下执行cmd命令: jmeter -n -t test.jmx -l result.jtl -e -o /tmp/ResultReport 参数解析: ● -n: 非GUI模式执行JMeter ● -t: 执行测试文件所在的位置 ● -l: 指定生成测试结果的保存文件,.jtl文件格式 ● -e: 测试结束后,生成测试报告 ● -o: 指定测试报告的存放位置 ● /tmp/ResultReport :手动创建的 ResultReport 报告文件夹的路

  • Jmeter调用java脚本过程详解

    这篇文章主要介绍了Jmeter调用java脚本过程详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 jmeter为纯java编写,所以有三种方式使用java脚本,分别是:调用 .java 文件:调用 .class文件 :调用 .jar 文件 1. jmeter调用.java文件 1>. 新建一java脚本,内容如下: 2>. 新建线程组>>添加BeanShell Sampler.Debug PostProcessor.查看结果树

  • jmeter设置全局变量与正则表达式提取器过程图解

    接口测试中,很多接口都要带上登录后的token才能正常发送请求,这里记录一下登录获取token设置为全局变量供其他接口使用 登录后返回信息信息中会有一个token值,添加后置处理器中的正则表达式提取token,然后用后置处理器中的BeanShell PostProcessor设置token为全局变量 1.获取token值: 1.1.用fiddler抓包 1.2.F12查看接口信息 1.3.用jmeter登录查看 2.正则表达式提取token: 3.BeanShell PostProcessor设

  • java自定义jar包让jmeter使用的方法

    上一篇文章中,提到怎么生成jar包让jmeter使用,这次我们来试试做参数,因为发现调包的时候其实更多还是参数化,那么开始改造吧 1.在httpclientpost这个类中替换参数,且打印参数 import java.io.BufferedReader; import java.io.IOException; import java.io.InputStream; import java.io.InputStreamReader; import java.util.ArrayList; impo

  • 在jmeter的beanshell中用java获取系统当前时间的简单实例

    复制代码 代码如下: import java.util.*; int y,m,d,h,mi,s;     Calendar cal=Calendar.getInstance();     y=cal.get(Calendar.YEAR);     m=cal.get(Calendar.MONTH);     d=cal.get(Calendar.DATE);     h=cal.get(Calendar.HOUR_OF_DAY);     mi=cal.get(Calendar.MINUTE);

  • Jmeter线程组传参原理解析

    这篇文章主要介绍了jmeter线程组传参原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 背景介绍: 使用jmeter做登录和搜索接口的测试: 登录接口请求头为:Content-Type: application/x-www-form-urlencoded; charset=UTF-8 搜索接口请求头为:Content-Type: application/json; charset=UTF-8 同时,搜索的请求头中需要用到登录接口返回值中

  • python线程定时器Timer实现原理解析

    这篇文章主要介绍了python线程定时器Timer实现原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 一.线程定时器Timer原理 原理比较简单,指定时间间隔后启动线程!适用场景:完成定时任务,例如:定时提醒-闹钟等等. # 导入线程模块 import threading timer = threading.Timer(interval, function, args=None, kwargs=None) 参数介绍: interval

  • Python线程条件变量Condition原理解析

    这篇文章主要介绍了Python线程条件变量Condition原理解析,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 Condition 对象就是条件变量,它总是与某种锁相关联,可以是外部传入的锁或是系统默认创建的锁.当几个条件变量共享一个锁时,你就应该自己传入一个锁.这个锁不需要你操心,Condition 类会管理它. acquire() 和 release() 可以操控这个相关联的锁.其他的方法都必须在这个锁被锁上的情况下使用.wait()

  • 详解Jmeter线程组的设置方法

    目录 一.事件背景 二.关于线程组的相关设置 一.事件背景 个人感觉自己做性能测试,可以说是轻车熟路了,而且工作多年一直都是这一套测试思路及体系,从未质疑过自己,也许是狮子座的迷之自信吧! 也就在上周让我对自己的测试方法及体系产生了质疑! 为什么?在性能测试的时候,压测500并发通过,人家40并发都过不去. 通俗点说,就是你测试没问题,在人家那测试出问题了,忽略脚本问题,显而易见因为测试方法差异导致测试结果的不同. 1.关于执行方法的差异 同事的做法是直接跑10分钟的稳定性测试,然后上并发数:

  • java线程组构造方法源码解析

    目录 线程组构造方法 为啥开启线程,就能统计到呢? 线程组下面可以有线程组吗? 线程组构造方法 我们看这个线程组,线程组名字是system,设置优先级,然后指定父线程是空,可以看出这个是根线程组,这个方法是私有的,不是给我们调用的. 把当前线程加入线程组中 我们试试上述代码逻辑,对叭,没指定线程组就加入当前创建的main线程的线程组,如果指定线程组就是当前线程组. 我们看源码也是一样: 活跃线程和活跃线程组数量都是0: 我们这是没开启线程,所以我们需要开启线程,这里就看到活跃线程数量了: 为啥开

  • Java开启新线程并传参方法代码实现

    一.继承Thread类 步骤: 1):定义一个类A继承于Java.lang.Thread类. 2):在A类中覆盖Thread类中的run方法. 3):我们在run方法中编写需要执行的操作:run方法里的代码,线程执行体. 4):在main方法(线程)中,创建线程对象,并启动线程: (1)创建线程类对象: A类 a = new A类(); (2)调用线程对象的start方法: a.start();//启动一个线程 注意:千万不要调用run方法,如果调用run方法好比是对象调用方法,依然还是只有一个

  • Linux实现驱动模块传参过程解析

    在驱动的模块中声明一下你要传递的参数名称,类型和权限 module_param(变量的名称,类型,权限); #include <linux/init.h> #include <linux/module.h> static char *p_name = "Usr"; module_param(p_name, charp, S_IRUGO); MODULE_PARM_DESC(p_name, "This is a char * string.")

  • Django视图、传参和forms验证操作

    简介视图 主要内容:URLconf.HttpRequest对象.HttpResponse 1)视图接受Web请求并且返回Web响应 2)视图就是一个python函数,被定义在views.py中 3)响应可以是一张网页的HTML内容,一个重定向,一个404错误等等 4)在http请求中产生两个核心对象,所在位置是,django.http: http请求:HttpRequest对象 http响应:HttpResponse对象 这两个对象是由django帮我构造的 URLconf相关概述 • 在set

  • vue3 携带参数跳转|router传参方式

    目录 携带参数跳转|router传参 原理 demo vue路由跳转,参数的携带与获取 第一种方式 第二种方式 携带参数跳转|router传参 A页面点击按钮后携带参数跳转到B页面 原理 导入router import { useRouter } from "vue-router"; A页面传参router.push({}) B页面接收route.params.num; demo route.js { path: '/A', name:'A',component: () => i

  • Jmeter跨线程组传值调用实现图解

    Jmeter的线程组之间是独立的,用Jmeter做接口测试或者是性能测试时,经常会涉及到多个线程组.那么如何将A线程组返回的变量信息提取后,传递给B,C线程组使用呢?这里以已登录接口返回的access_token值为例,在这里我用了一个BeanShell后置处理器来结合使用,过程如下: 第一步:测试计划:必须勾选[独立运行每个线程组] ​ 第二步:登录接口返回access_token ​ 第三步:通过正则表达式提取器提取:access_token ​ 第四步:在BeanShell后置处理器中使用

随机推荐