目标:使用JMeter做接口自动化,实现手机号+验证码注册
JMeter操作mysql数据库
步骤1:发送手机号注册验证码(成功前提:手机号未注册)
目标:清除数据库手机号
- 选中HTTP请求--》右键添加,配置元件,JDBC Connection Configuration
- 填写JDBC连接配置信息
- Variable Name for created pool:一定要设置,用于后续操作mysql库
- Database URL:
jdbc:mysql://${db_url}:${db_port}/${db_name}?serverTimezone=UTC
- JDBC Driver class:
com.mysql.jdbc.Driver
- 选中HTTP请求--》右键添加,前置处理器,JDBC PreProcessor
- Variable Name Bound to Pool:上一步设置的JDBC连接池变量
- Query Type:
Update Statement
- SQL更新语句:
update basic_auth set encrypted_phone_number=NULL, hashed_phone_number=NULL WHERE hashed_phone_number="${test_phone_number_hashed}";
JMeter操作redis
步骤2:手机号+验证码注册接口(前提:获取redis中手机号注册验证码)
目标:获取redis中手机号注册验证码,并保存到变量
-
JMeter Plugins Manger中安装redis插件库,安装成功后$JMETER_HOME/lib/ext下会有对应的jar包
2 选中线程组--》右键添加,Samper,BeanShell Sampler
- 编写BeanShell脚本,操作redis库。并且将获取到的验证码保存到变量。
//import java.util.Map;
import redis.clients.jedis.Jedis;
import org.apache.commons.lang3.StringUtils;
String host = "${redis_host}"; //服务器地址
int port = ${redis_port}; //端口号, int
String password = "${redis_password}"; //redis密码
int index = 1; //redis db
Jedis jedis = new Jedis(host, port);
if(StringUtils.isNotBlank(password)){
jedis.auth(password);
}
jedis.select(index);
// 获取redis值,value为String类型
//String value = jedis.get(key);
//获取redis值,value为hash类型
String value = jedis.hget("platform:account:captcha:register:${test_phone_number}", "captcha");
vars.put("redis_phone_captcha", value); // 将获取到的redis值,保存为变量
// 更新redis值,value为hash类型
// 如果key对应captcha值不存在,则创建对象
// jedis.hset(key, "captcha", "123456");
// 删除redis key
// jedis.del("key_name");