Jmeter参数化(_csvread函数、CSVDataSetConfig)
⽅法⼀、Jmeter⾃带的函数助⼿——_CSVRead函数
1.数据准备:先在excel存储数据,保存格式选择csv格式。或在记事本存储数据,列之间⽤英⽂逗号分隔,保存为txt
2.使⽤_csvread函数:选项-->函数助⼿对话框,打开函数助⼿弹窗,选择_csvread函数正则匹配到第一个关键字就停止
第⼀⾏:输⼊csv⽂件所在的路径,如F:\test.csv。
第⼆⾏:输⼊参数所在的列,列数是从0开始数的。如第⼀列是⽤户名对应的列号为0;第⼆列是密码对应的列号为1。
点击⽣成被调⽤的函数:${__CSVRead(F:\test.csv,0)},在参数对应的值处填⼊该值。
⽅法⼆、CSV Data Set Config
通过Test Plan或者Thread Group的Add->Config Element(配置元件)->CSV Data Set Config,设置变量名后通过${name}引⽤
以下是CSV Data Set Config各个参数的简要说明:
FileName:和脚本同路径只需写⽂件名,如果不是则填写全路径名称
File Encoding: 编码⽅式,可以不填写,默认为ANSI。如果有中⽂,建议utf-8
Varible Names: 定义⽂本⽂件中的参数名,参数之间逗号分隔,定义后可在脚本在以Shell变量的同样的⽅式引⽤。如给出变量名user,pass,通过变量名引⽤${name},${pwd}
Delimiter(use '\t' for Tab):这个是⽤来隔开变量的分隔符,如上⾯的user,pass,那分隔符就是“,”。
Allow Quoated data: 双引号相关,例:如果参数中需包含逗号","或者双引号",该项可以选择True
Recycle on EOF: 设置为True后,允许循环取值
Stop Thread on EOF: 当Recycle on EOF为false并且Stop Thread on EOF为true,则读完csv⽂件中的记录后,停⽌运⾏
Sharing Mode: 设置是否线程共享。
All threads:所有线程,所有线程循环取值,线程1取第⼀⾏,线程⼆取下⼀⾏。
Current thread group:当前线程组,各个线程组分别循环取值。
Current thread:当前线程,该测试计划内的所有线程都取第⼀⾏。
⽅法三、⽤户定义的变量
选中取样器,右键:添加-配置元件-⽤户定义的变量。在列表中填⼊名称和值,在别处就⽤${name}来引⽤
⽅法四、正则表达式提取器获取
在打开登录页的时候服务器有返回⼀个sid,获取到sid后,然后登录进⼊到⾸页;所以在这个请求下添加后置处理器:右键-添加-后置处理器-正则表达式提取器
第1部分:名称+注释,可不修改,只是为了⽅便⾃⼰识别
第2部分:apply to 默认即可
第3部分:要检查的字段:主体等选择,⼀般我们选择主体,即服务器返回给我们的页⾯主体信息
第4部分:
【引⽤名称】:就是参数名称,在别处引⽤;如输⼊mysid,别处引⽤的时候使⽤${mysid}
【正则表达式】:表达式中()内的内容就是要提取的。如sid/(.*?)",表⽰查sid/字符串之后的内容,直到出现第⼀个"时结束;(注意括号⾥的表⽰提取的内容)
【模板】:⽤$$引⽤起来,如果在正则表达式中有多个正则表达式(多个括号括起来的东东),则可以是$1$(表⽰只有
⼀组数
据),$2$等等,表⽰解析到的第1个、第2个值给mysid
【匹配数字】:0代表随机取值,-1代表所有,1代表全部取值
【缺省值】:如果参数没有取到值,则使⽤此处的缺省值
注意:运⾏脚本后,在“察看结果树”中,[响应数据]标签页先搜索sid出现的位置,及出现的规律,如出现的时候前⾯会有“sid/”字符串;调试正则提取表达式的时候,可添加Debug Sampler来查看是否正确提取到对应的值(右键-添加-Sampler-Debug Sampler)
⽅法五、从数据库获取
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:sql.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,则不同虚拟⽤户或循环固定读取某⾏数据。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论