最近时间比较充足,学习了一些jmeter的使用,中间遇到了各种问题,也是各种百度搜索,最终才解决好,所以总结一下分享给大家。
前提:下载并配置了mysql的jdbc驱动包,有两种方法:
方法一:下载mysql的jdbc驱动后,直接复制到jmeter的lib目录下,重启jmeter
方法二:下载mysql的jdbc驱动后,添加jar包到ClassPath中。操作:打开jmeter—>新建测试计划—>浏览—>选择对应的jar包即可
接下来就开始连接数据库:
一. 添加JDBC Connection Configuration配置
线程组—》右键添加—》配置元件—》JDBC Connection Configuration
JDBC Connection Configuration中配置的内容如下:
Variable Name for Created pool:连接池的变量名,随便起,但是后面会用到
DataBase URL:格式jdbc:mysql://主机地址:端口/数据库名,若是有问题可以后面拼接上?serverTimezone=UTC&characterEncoding=utf-8;
allowMultiQueries=true表示可同时执行多条sql语句,若需要也可拼接上
JDBC Driver Class:数据库驱动类型(mysql为com.mysql.jdbc.Driver)
Username:数据库登录的用户名
Password:数据库登录的用户名对应的密码
二:添加jdbc Request取样器
点击线程组—》右键添加—》取样器—》JDBC Request
JDBC Request中的配置如下:
注意QueryType=Select Statement 执行的是第一条sql语句,如果第一行是注释的也不行,会请求失败,提示如下
正确如下:
到这,基础的使用jdbc Request取样器连接数据库就成功了,接下来我们进行一些稍微复杂点的操作:
1.jdbc request请求参数化:
现在又一批二十多条的人员名单,我需要获取到他们的id,name,就需要使用参数化,就使用正常的CSV参数化的方法:
步骤:添加CSV 数据文件设置—>设置csv数据文件—>修改JDBC Request中的sql语句
2.想要把这些数据保存为本地文件:选择jdbc Request取样器—》右键添加—》后置处理器—》BeallShell后置程序,编写一下脚本:
首先把这两个字段值打印到日志看下:name可以成功打印出来,但是id没有定义所以一直获取不到
解决办法:在jdbc Request中设置Variable names:将查询结果设置为变量名,供后续请求调用
调用语句是:变量名_index 打印到日志中在看下:
log.info(vars.get("columen1_"+1));这里的1就是index,相当于索引
完整的脚本:
FileWriter fstream = new FileWriter("D:\\test.csv",true); BufferedWriter out = new BufferedWriter(fstream); out.write(vars.get("columen1_"+1)); out.write(",");//换列 out.write(vars.get("name")); out.write(System.getProperty("line.separator"));//换行 out.close(); fstream.close();
3.现在想通过获取用户的手机号,并把这个手机号传递给登录接口使用,
可以参考: