Jmeter 参数化请求实例
在jmeter中的请求可以参数化,其中参数化的方式有4种:
1.CSV Data Set Config
2.数据库
3.用户自定义变量
4.用jmeter中的函数获取参数值
第一种方式:CSV Data Set Config
1.创建一个data.txt文件,内容如下:
101010100,北京
101010200,海淀
101010300,朝阳
请求天气的URL为:GET http://www.weather.com.cn/weather/101010100.shtml
2.创建
2.1 线程组
- 2.2 添加CSV Data Set Config
2.3 HTTP请求
服务器名称或IP:www.weather.com.cn
协议为: http 方法为:GET
路径为: /weather/${citycode}.shtml 其中${citycode}是引用CSV Data中citycode
- 2.4 添加断言 ——断言内容为 ${city} ,是引用CSV Data中city
- 2.5 添加监控——添加查看结果树和聚合报告
- 2.6 运行并查看结果
第二种方式:数据库
- 请参阅Jmeter测试MySQL数据库实例 ,
添加:
1.线程组
2.JDBC Connection Configuration
3.JDBC Request 请求 用户id 为2的用户名和性别 命令为:select concat(name,sex) from UserInfo where userid="2";
其中concat是把name和password连接起来,然后方便正则表达式进行提取
- 4.正则表达式提取器
正则表达式填写:
- 注释:随便
- Apply to: 默认即可
- 要检查的字段:主体等选择,一般选择主体,即服务器返回给jmeter的页面主体信息
- 引用名称:定义的参数名称,在后面步骤时可引用
- 正则表达式: 正则表达式中()括起来的部分就是要提取的。
- 模板:$1$代表只有一组数据,$1$$2$代表有两组数据
- 匹配数字:0代表随机取值,1代表全部取值,通常情况下填0
- 缺省值:如果参数没有取得到值,那默认给一个值让它取
5.针对上一级数据库请求返回的结果,添加查看结果树,JDBC Request返回正确后,再新建HTTP请求,引用后置处理器取出的参数 name,引用方式 ${name}
name sex
liming female
7.针对HTTP请求添加查看结果树,运行后,查看结果
第三种方式:用户自定义变量
1.添加HTTP请求,引用 用户自定义的变量 ${searchword} 和${ts}
2.添加用户自定义变量( 添加-配置原件-自定义变量)
3. 运行查看结果
第四种方式:使用Jmeter自带的函数获取参数值
Jmeter中可以产生值的函数有:__Random( , , ),__threadNum,__CSVRead( , ),__StringFromFile( , , , )
各函数调用方法如下:
1)__Random( , , ),获取值的方式:${__Random( param1,param2 ,param3 )},param1为随机数的下限,param2为随机数的上限,param3为存储随机数的变量名,是选填项。所以,也还可以这样调用此函数:_Random(param1,param2,param3),然后再取param3的值。
2)__threadNum,获取值的方式:${__threadNum},这个函数没有任何参数,它用于得到当前运行的线程编号。
3)__CSVRead( , ),获取值的方式:${__CSVRead(param1,param2)},param1是文件名,param2是文件中的列(列数从0开始)。具体操作见csv数据提取部分的说明。
4)__StringFromFile( , , , ),获取值的方式:${__StringFromFile(param1,param2,param3)},param1是文件名,param2、param3为选填项:param2—存储结果的变量,param3—文件开始列,网上找到一点此函数的用法,来自:
1.函数:${_StringFromFile(文件名.dat)}
2.外部文件的格式必须为.dat
3.默认读取位置为/bin下,也可以自己设定文件存放路径,如:${_StringFromFile(e:user.dat)},从e盘下读取user.dat文件中的数据
4.每次读取文件中的一行
5.如果我有多个user文件,想一起读取,文件名分别为user1 user2。函数写为:${_StringFromFile(user#.dat,,1,2)},从默认目录下读取user1和user2的文件
6.如果一个文件想读取多次,可以写成:${_StringFromFile(user.dat,,,2)},user1文件读取2次
]
1)__Random( , , ),获取值的方式:${__Random( param1,param2 ,param3 )},param1为随机数的下限,param2为随机数的上限,param3为存储随机数的变量名,是选填项。所以,也还可以这样调用此函数:_Random(param1,param2,param3),然后再取param3的值。
2)__threadNum,获取值的方式:${__threadNum},这个函数没有任何参数,它用于得到当前运行的线程编号。
3)__CSVRead( , ),获取值的方式:${__CSVRead(param1,param2)},param1是文件名,param2是文件中的列(列数从0开始)。具体操作见csv数据提取部分的说明。
4)__StringFromFile( , , , ),获取值的方式:${__StringFromFile(param1,param2,param3)},param1是文件名,param2、param3为选填项:param2—存储结果的变量,param3—文件开始列,网上找到一点此函数的用法,来自:
1.函数:${_StringFromFile(文件名.dat)}
2.外部文件的格式必须为.dat
3.默认读取位置为/bin下,也可以自己设定文件存放路径,如:${_StringFromFile(e:user.dat)},从e盘下读取user.dat文件中的数据
4.每次读取文件中的一行
5.如果我有多个user文件,想一起读取,文件名分别为user1 user2。函数写为:${_StringFromFile(user#.dat,,1,2)},从默认目录下读取user1和user2的文件
6.如果一个文件想读取多次,可以写成:${_StringFromFile(user.dat,,,2)},user1文件读取2次
]
转载:http://blog.csdn.net/youxiansanren/article/details/51199863