1、若请求参数为json串,则需要在HTTP信息头管理器中添加如下配置,而后在HTTP请求Content encoding字段值填写:utf-8,而后在Body Data中放入请求参数;
名称:Content-Type;
值 :application/json;
2、JMeter中Parameter和Body Data区别:
Parameters:
xx=xx&xxx=xx格式的参数为GET或者POST请求中,URL中带的参数值,如:
在如下URL中:/api/vl/courseware/list?index=0&thumb=1;
?号后面的可以写在URL中,也可以写在Parameters中。
使用parameters时,Content-Type不传默认值为:application/x-www-from-urlencoded或者直接传application/x-www-from-urlencoded,若传application/json出错;
Body Data:
json格式的是POST请求中的参数,POST请求参数时,看请求的格式,是否需要在请求中添加HTTP信息头管理器,将请求的Content-Type或者User-Agent等进行定义;
使用Body Data时,Content-Type可传application/x-www-from-urlencoded或者application/json,区别是数据格式不同;
3、输入部分参数化:
A、用JMeter中的函数获取参数值,函数如下:__Random,__threadNum,__CSVRead,__StringFromFile,具体调用方法如下:${__Random(,,)}等;
通过菜单选项-》函数助手对话框找到JMeter函数;
B、用户定义变量:添加配置元件-》用户定义的变量,名称中输入变量名称,以登录为例,定义两个变量username和password。值中可以直接输入值,也可以通过JMeter函数__CSVRead,__StringFromFile从csv或dat文件中读取,还可以通过前缀加随机数的方法设置参数;
C、从CSV文件中读取:当参数的值没有规律且量不大时,可以用这种方法:首先,创建一个CSV文件,内容为参数的值集,每个参数占一列,第一行就开始写参数值,不要写参数名;在测试计划或线程组中添加一个配置元件-》CSV Set Config;其次,在filename中填写上述步骤中CSV文件的完整路径;Virable Names中填写变量名,如果CSV文件中有多个变量,则用逗号隔开;
D、从数据库中读取:当参数的值没有规律且量比较大时,可以选用这种方法:
具体操作如下:
在如下网址中下载相应的JDBC文件MySQL JDBC “http://dev.mysql.com/get/Downloads/Connector-J/mysql-connector-java-5.1.12.zip/from/http:ftp.jaist.ac.jp/pub/mysql/”;
解压下载的zip包后,将其中的mysql-connector-java-java-5.1.12-bin.jar放到JMeter的lib目录下;
添加配置元件-》JDBC Connection Configuration,设置如下参数列:
Database URL:jdbc:mysql://host:port/db(如jdbc:mysql://localhost:3306/testlink
JDBC Driver class:com.mysql.jdbc.Driver
username:连接数据库的用户名(如root)
password:连接数据库的密码
添加Sampler-》JDBC Request,在SQL Query中输入查询语句,如下:
SELECT CONCAT (“[",
GROUP_CONCAT(
CONCAT("{username:'",login,"'"),
CONCAT("{password:'",password),"'}"),"]“) AS json FROM users
而后在上述JDBC请求中添加后置处理器-》正则表达式,以提取查询得到的用户名和密码,例如设置正则表达式提取器的参数:引用名称:user
正则表达式:username:'(.+?)'\{password:'(.+?)'}
模板:$1$$2$
使用时,user_g1即为用户名,user_g2即为对应用户名的密码
D、在Body Data中参数设置为:
{
"empCode": "${num}",
"month" : "201806"
}
4、