前言

对于参数化,觉得用得最多的应该是csvread函数、csv data config以及用户自定义变量(前一篇文章已经进行了讲解)控制器这几个

案例:bugfree ,提交bug,参数bug名称和创建人

方法一、依赖Jmeter自带的函数助手

选项-->函数助手对话框,即可打开函数助手弹窗

比如使用函数__CSVRead

  先准备txt文件,可以先在notepad++里准备好数据,保存的时候格式选择txt格式;

  

  输入txt文件所在的路径:C:\Users\Anne\Desktop\Jmeter\data.txt,输入参数所在的列(注意:此处列数是从0开始数的,第一列是bug_name,对应的列号为0,第二列是bug提交人,对应的列号为1...),生成被调用的函数:${__CSVRead(C:\Users\Anne\Desktop\Jmeter\data.txt,0)}

  

  在参数对应的值处填入:${__CSVRead(C:\Users\Anne\Desktop\Jmeter\data.txt,0)}

  

要区第二个参数时,对应的位置,填入:${__CSVRead(C:\Users\Anne\Desktop\Jmeter\data.txt,1)}

对应的参数修改完后,执行脚本,在查看结果树中,查看运行结果

方法二、CSV Data Set Config

选中取样器,右键:添加-配置元件-CSV Data Set Config,从txt文件中读取

Filename:csv文件所在的路径以及名称如:C:\Users\Anne\Desktop\Jmeter\data.txt;(其实不一定要txt文件,亲测csv格式的文件也可以)

File encoding:给出页面的编码方式,可以不填写;这里以bugfree为例,它的源代码里是utf-8 ,所以这里是utf-8
Variable Names(comma-delimited):给出变量名如:title,build;这里的变量名是给后面引用用的,如要用到这个文件的值,可以利用变量名来引用:${title},${build}
Delimiter(use '\t' for Tab):这个是用来隔开变量的分隔符,如上面的title,name,那分隔符就是“,”

Allow quoted data?:是否允许引用数据

Recycle on EOF?:到了文件尾是否循环,True---继续从文件第一行开始读取,False---不再循环

Stop thread on EOF?:到了文件尾是否停止线程,True---停止,False---不停止,注:当Recycle on EOF设置为True时,此项设置无效。

Sharing mode:共享模式,All threads---所有线程,Current thread group—当前线程组,Current thread—当前线程。这个地方和LoadRunner中的迭代取之相反,经试验得出来的结果是:

    All threads:测试计划中所有线程,假如说有线程1到线程n (n>1),线程1取了一次值后,线程2取值时,取到的是txt文件中的下一行,即与线程1取的不是同一行。

    Current thread group:当前线程组,假设有线程组A、线程组B,A组内有线程A1到线程An,线程组B内有线程B1到线程Bn。取之情况是:线程A1取到了第1行,线程A2取第2行,现在B1取第1行,线程B2取第2行。

    Current thread:当前线程。假设测试计划内有线程1到线程n (n>1),则线程1取了第1行,线程2也取第1行。

综上:CSV Data Set Config实现的功能跟之前用的:${__CSVRead(C:\Users\Anne\Desktop\Jmeter\data.txt,0)}这个函数实现的功能大体上是一样的。

方法三、从数据库获取数据

1) 将其中的mysql-connector-java-5.1.34-bin.jar放到Jmeter的lib目录下

2) 添加“配置元件”->“JDBC Connection Configuration”,设置下列参数:
Variable Name:连接池名称

Database URL:jdbc:mysql://host:port/db(jdbc:mysql://ip地址:端口号/数据库名称)

JDBC Driver class:com.mysql.jdbc.Driver

username:连接数据库的用户名(如root)

password:连接数据库的密码

3) 添加“Sampler”->“JDBC Request”,在SQL Query中输入查询语句,如下:
select concat(domain,'+',po_pwd) as userpass from domain;

Variable Name:连接池名称

注意:该值要和JDBC Connection Configuration中配置的Variable Name值对应,否则会提示:No pool found named: 'pool12', ensure Variable Name matches Variable Name of JDBC Connection Configuration;

4) 在JDBC请求中添加“后置处理器”->“正则表达式提取器”,以提取用户名、密码为例,设置正则表达式提取器的参数:

  引用名称:userPass
  正则表达式:(.*)\+(.*)
  模板:$1$$2$
  使用时,userPass_g1即为用户名,userPass_g2即为对应用户名的密码;

  

注意:

(1)+在正则表达式中是关键字,所以需要\转义。

(2)匹配数字,填0或不填,表示随机读取,如果填正整数,如1,则不同虚拟用户或循环固定读取某行数据。

jmeter调试脚本之变量参数化的更多相关文章

  1. jmeter调试脚本之用户自定义变量

    一.用户自定义的变量 用户自定义变量,设置变量名.变量值,就引用变量名执行操作 名称:用户定义变量的描述性名称,显示在左边节点上,并用于命名事务 注释:用户定义变量的注释信息,非必填项 变量名称:定义 ...

  2. Jmeter调试脚本之关联

    前言: Jmeter关联和loadrunner关联的区别: 1.在loadrunner中,关联函数是写在要获取变量值的页面的前面,而在就Jmeter中关联函数是要写在获取变量函数值的页面的后面 2.在 ...

  3. jmeter的脚本增强之参数化

    jmeter作为一款开源的测试工具,功能广泛,深受测试同胞们的喜爱,这次来讲讲关于如何参数化及其方式.那为什么要进行一个参数化呢,如做压测时,要有大量的数据来模拟用户的真实场景,像登录页面操作,系统是 ...

  4. jmeter jsr223脚本引用变量的问题

    发现jmeter的一个问题不知道算不算bug. 具体表现为,在脚本中通过"${varName}"的方式引用前面使用vars.put("varName",&quo ...

  5. Jmeter调试脚本之断言

    前言: jmeter中有个元件叫做断言(Assertion),它的作用和loadrunner中的检查点类似: 用于检查测试中得到的响应数据等是否符合预期,用以保证性能测试过程中的数据交互与预期一致. ...

  6. JMeter学习-014-JMeter 配置元件实例之 - 用户定义的变量 参数化配置

    前文讲述了通过 CSV Data Set Config 实现参数化配置(详情敬请参阅:JMeter学习-010-JMeter 配置元件实例之 - CSV Data Set Config 参数化配置), ...

  7. JMeter脚本增强之参数化

    JMeter测试脚本录制或者编写,在Web应用和App上的操作方式可能有一点点区别(其实也差不多,哈哈),但是当脚本录制好了之后,对测试脚本的强化,包括参数化.关联.文本检查.集合点设置,甚至再往后的 ...

  8. 『动善时』JMeter基础 — 23、JMeter中使用“用户自定义变量”实现参数化

    目录 1.用户自定义变量介绍 2.使用"用户自定义变量"实现参数化 (1)测试计划内包含的元件 (2)数据文件内容 (3)测试计划界面内容 (4)线程组元件内容 (5)CSV数据文 ...

  9. 【转】Jmeter变量参数化及函数应用

    我们在使用Jmeter录制脚本后,经常会对已录制的脚本进行修改,需要把一些参数使用一些变量替代,Jmeter是支持这些功能的,不过是通过函数实现的.下面举一个简单的例子,使用随机数替代一个参数: 打开 ...

随机推荐

  1. 浅谈tcp_nodelay的作用

    今天在用nginx作web缓存的时候,发现在http里加入这样个参数,能有效的提高数据的实时响应性,那就是tcp_nodelay.下面我们来说说tcp_nodelay的原理: TCP_NODELAY和 ...

  2. [转载].NET Web开发技术(补充)

    大家在工作应该养成善于总结的习惯,总结你所学习.使用的技术,总结你所工作事项的比较好的地方,善于总结不断的沉淀优化自己.适时停下来总结下过去走过的路,才能让我们的未来走的更坚定.文章转自JamesLi ...

  3. Exception has been thrown by the target of an invocation

    I'd suggest checking for an inner exception. If there isn't one, check your logs for the exception t ...

  4. .net core i上 K8S(七).netcore程序的服务发现

    上一章我们分享了k8s的网络代理模式,今天我们来分享一下k8s中的服务发现. 1.环境变量模式的服务发现 k8s默认为我们提供了通过环境变量来实现服务发现的功能,前提是 1.需要service在pod ...

  5. SP16580 QTREE7 - Query on a tree VII(LCT)

    题意翻译 一棵树,每个点初始有个点权和颜色(输入会给你) 0 u:询问所有u,v路径上的最大点权,要满足u,v路径上所有点颜色相同 1 u:反转u的颜色 2 u w:把u的点权改成w 题解 Qtree ...

  6. [译文]casperjs的API-clientutils模块

    casper提供了少量的客户端接口用来进行远程DOM环境注入,通过clientutils模块的ClientUtils类实例中的__utils__对象来执行: casper.evaluate(funct ...

  7. java double 保留两位小数

    java保留两位小数问题: 方式一: 四舍五入  double   f   =   111231.5585;  BigDecimal   b   =   new   BigDecimal(f);  d ...

  8. scrapy连接MySQL

    Scrapy中连接MySQL所需要做的工作如下: 1.settings中需要设置的部分 # 启动管道组件 ITEM_PIPELINES = { 'QianChengWuYu.mongoDBPiplel ...

  9. 数组其他部分及java常见排序

    数据结构的基本概述: 数据结构是讲什么,其实大概就分为两点: 1.数据与数据之间的逻辑关系:集合.一对一.一对多.多对多 2.数据的存储结构: 一对一的:线性表:顺序表(比如:数组).链表.栈(先进后 ...

  10. StringBuffer类和String类的区别

    StringBuffer是使用缓冲区的,本身也是操作字符串的,但与String类不同,String类的内容一旦声明后是不可改变的,改变的只是其内存的指向,而StringBuffer类的对象内容是可以改 ...