小伙伴们在使用JMeter的过程中,肯定会遇到参数值传递的问题,下面来和大家总结下,在使用JMeter做压力测试的时候,常见的3种参数值的传递是怎样的。

(一)从CSV文件读取要批量输入的变量

假如我们要登录的数据保存在login.csv文件里,数据如下:

在JMeter中,我们需要添加CSV Data Set Config这个配置文件,如下图:

添加后,我们需要填写其中的必要参数,如Filename和Variable Names:

这里要注意下Variable Names里面的分隔符,为啥是用’,’号呢,因为csv文件login.csv用notepad++打开是如下所示,前面的字段是代表用户的user,后面的字段代表的pwd:

配置好CSV Data后,我们添加login的HTTP请求,截图如下:

其中用户的user和pwd都是用${}包围着的,这个是JMeter的语法规定。配置线程数为5,点击启动按钮运行后,看到的结果如下:

可以看到,login.csv文件中的2个字段被当作参数值进行了传递。

(二)利用Cookie进行值的传递

用JMeter进行接口调试时,有时候会遇到需要登录的情况,如请求wetest的DataSearchAjax接口:

返回的结果如下:

出现这种情况的原因很明显是未登录引起的。一个较好的解决方法就是将登录后的cookies保存下来,在访问DataSearchAjax接口的时候,带上用户登录后的cookies信息进行查看。

在JMeter中,我们可以通过如下途径进行cookies的传递,如下图添加HTPP Cookie管理器:

再给登录的接口添加前置处理器Bean Shell PreProcessor,用来保存登录的cookies:

下面,我们要在Bean Shell PreProcessor里面添加我们的cookies值了。

import org.apache.jmeter.protocol.http.control.CookieManager;

import org.apache.jmeter.protocol.http.control.Cookie;

// 身份验证必须的cookie值字段(可以询问开发哪些是必须要校验的字段)

// 可以在登录后,点击chrome里URL右边的查看网站信息按钮,查看所有的cookie值找到

// wetest的校验字段是:csrftoken和sessionid

CookieManager manager = sampler.getCookieManager();

String csrftoken = "898b3ade5cb3744140503da601dee5d6793f82807cda581de9eb0982c05dfdc7a";

//定义Cookie对象,其中参数:cookie的名称, cookie值, cookie域, 路径, 安全

Cookie cookie = new Cookie("csrftoken",csrftoken,"wetest.qq.com","/",false,0);

manager.add(cookie);

String sessionid = "0ir0hrodptu5qgv9qurk98c3l4";

Cookie cookie1 = new Cookie("sessionid",sessionid,"wetest.qq.com","/",false,0);

manager.add(cookie1);

添加完HTPP Cookie管理器和在前置处理器Bean Shell PreProcessor写好脚本后,再次运行登录接口和DataSearchAjax接口:

可以看到,后面的请求携带了我们在Bean Shell PreProcessor脚本中保存的cookie值,并且成功返回了要查询的数据。

(三)利用正则匹配提取上一个接口的返回数据作为下个请求的输入

用JMeter进行接口调试时,经常会遇到上一接口的返回值中的某个字段,要作为下一接口的输入,这种情况下,我们需要利用正则匹配来提取我们需要的值。

例如,若要提取相应数据中的goodpraise字段作为下个接口的输入的话,可以在该接口请求后面添加正则表达式提取器:

我们给正则表达式提取器命名为get_goodpraise,并填写引用名称、正则表达式、模板、匹配数值、缺省值,填写后的如如下:

填写完成后,在添加新的HTTP请求,来测试提取到的goodpraise_name字段:

这里要注意,${}里面填写的一样要是引用名称的变量,保存后执行:

若返回的请求goodpraise_name字段为-1,-1是我们设定的默认字段。那说明我们的正则表达式写错了,要仔细检查下改成正确的正则表达式,再执行:

可以看到,我们提取到的goodpraise_name字段成功传递给新的http请求。

至此,JMeter中3种参数值的传递已全部讲解完,小伙伴们学会了吗~*(^_^)*~

本文由腾讯WeTest团队提供,更多资讯可直接戳链接查看:http://wetest.qq.com/lab/

JMeter中3种参数值的传递的更多相关文章

  1. Jmeter中的参数化常用的几种方式

    Jmeter中的参数化常用的几种方式,这里讲一下前两个方式,最后一个在csv参数化里已详细讲解. 1.用户参数 2.函数助手 3.CSV Data Set Config  一.用户参数 位置:添加-前 ...

  2. .net中常用的几种页面间传递参数的方法

    转自:http://www.cnblogs.com/lxshanye/archive/2013/04/11/3014207.html 参考:http://www.cnblogs.com/zhangka ...

  3. jsp中四种传递参数的方法

    jsp中四种传递参数的方法如下: 1.form表单 2.request.setAttribute();和request.getAttribute(); 3.超链接:<a herf="i ...

  4. C++中三种传递参数方法的效率分析

    众所周知,在C++中有三种参数传递的方式: 按值传递(pass by value) #include <iostream> using namespace std; void swap(i ...

  5. 『动善时』JMeter基础 — 22、JMeter中实现参数化(CSV)

    目录 1.参数化的定义 2.什么情况下需要用到参数化 3.JMeter实现参数化的方式 4.CSV数据文件设置界面详细说明 (1)CSV数据文件设置组件界面说明 (2)补充说明:Recycle on ...

  6. ASP.NET MVC5中View-Controller间数据的传递

    使用ASP.NET MVC做开发时,经常需要在页面(View)和控制器(Controller)之间传递数据,那么都有哪些数据传递的方式呢? 本文对于View向Controller中传值共列举了以下几种 ...

  7. JMeter中BeanShell实现写入文件

    1.首先F:\test.txt文件为空

  8. Jmeter中的几个重要测试指标释义

    一.基本概念 1.测试计划是使用 JMeter 进行测试的起点,它是其它 JMeter 测试元件的容器. 2.线程组:代表一定数量的并发用户,它可以用来模拟并发用户发送请求.实际的请求内容在Sampl ...

  9. 转帖Jmeter中的几个重要测试指标释义

    Aggregate Report 是 JMeter 常用的一个 Listener,中文被翻译为“聚合报告”.今天再次有同行问到这个报告中的各项数据表示什么意思,顺便在这里公布一下,以备大家查阅. 如果 ...

随机推荐

  1. RxJava + Retrofit 的实际应用场景

    关于 RxJava Retrofit 很多篇文章都有详细的说明,在这里我想分享一个具体的使用案例,在我的开源项目 就看天气 里的实际应用.也希望跟大家探讨如何优雅的使用. 准备 项目中用到的依赖: c ...

  2. 最大化 AIX 上的 Java 性能,第 4 部分: 监视流量

    http://www.ibm.com/developerworks/cn/aix/library/es-Javaperf/es-Javaperf4.html 最大化 AIX 上的 Java 性能,第 ...

  3. 【转】asp.net中利用session对象传递、共享数据[session用法]

    来自:http://blog.unvs.cn/archives/session-transfer-method.html 下面介绍Asp.net中利用session对象传递.共享数据用法: 1.传递值 ...

  4. memcache 启动参数

    启动方式: 参数 说明 -d 以守护程序(daemon)方式运行 -u root 指定用户,如果当前为 root ,需要使用此参数指定用户 -P /tmp/a.pid 保存PID到指定文件 内存设置: ...

  5. 传递给函数的隐含参数:arguments及递归函数的实现

    传递给函数的隐含参数:arguments当进行函数调用时,除了指定的参数外,还创建一个隐含的对象——arguments.arguments是一个类似数组但不是数组的对象,说它类似是因为它具有数组一样的 ...

  6. 用户编辑新建_AngularJS实现

    实现思路: 分步骤完成开发,逐渐添加功能:1.实现输出users对象.2.实现点击“编辑”按钮,在表单中显示firstname和lastname,并不可修改.3.实现“新建用户”和“编辑用户”的切换. ...

  7. Javascript 错误捕获

    一.一般写JS代码很少捕获异常,建议捕获异常,具体代码如下: 1.写法一: try { //具体代码 } catch(error) { alert("Error:" + error ...

  8. 使用async属性异步加载执行JavaScript

    HTML5让我兴奋的一个最大的原因是,它里面实现的新功能和新特征都是我们长久以来一直期待的.比如,我以前一直在使用placeholders,但以前必须要用JavaScript实现.而HTML5里给Ja ...

  9. mysql四种事务隔离级的说明

    ·未提交读(Read Uncommitted):允许脏读,也就是可能读取到其他会话中未提交事务修改的数据 ·提交读(Read Committed):只能读取到已经提交的数据.Oracle等多数数据库默 ...

  10. Android 程式开发:(十三)特殊碎片 —— 13.2 DialogFragment

    Android 程式开发:(十三)特殊碎片 —— 13.2 DialogFragment 原文地址 我们也可以创建另外一种碎片——DialogFragment.顾名思义,DialogFragment就 ...