应用场景:
使用手机验证码登录时,需要从redis缓存中获取短信验证码。
目前想到了两种方式,
1.使用BeanShell取样器直接连接redis;
2.使用BeanShell取样器调用Python脚本连接redis。
1、使用BeanShell取样器直接连接redis
首先,添加配置元件-用户定义的变量,添加变量服务器ip,端口号,秘钥,key值
然后,添加HTTP请求-发送短信验证码
接着,添加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}; //端口号
String password = "${redis-password}"; //redis密码
int index = 0; //redis db
String key2 = "${redis-key}"; //key值
print(key2);
String value = "";
Jedis jedis = new Jedis(host, port);
if(StringUtils.isNotBlank(password)){
jedis.auth(password);
}
jedis.select(index);
//String get = jedis.incr(key).toString();//将 key 中储存的数字值增1
String phone_code = jedis.get(key2); //获取key值对应的value值
print(phone_code);
vars.put("phone_code",phone_code); //将value值保存为变量
可以添加Debug PostProcessor查看连接redis是否成功
根据key值取到了value值代表连接redis成功了
2、使用BeanShell取样器调用Python脚本连接redis
代码:
import java.io.BufferedReader;
import java.io.InputStreamReader;
String command="cmd /c python D://python_work//automation//get_message_code.py -t ${phone}";
Runtime rt = Runtime.getRuntime();
Process pr = rt.exec(command);
pr.waitFor();
BufferedReader b = new BufferedReader(new InputStreamReader(pr.getInputStream()));
String line = "";
StringBuilder response = new StringBuilder();
while ((line = b.readLine()) != null) {
response.append(line);
}
String response_data = response.toString();
System.out.println(response_data);
b.close();
//System.out.println(response.toString());
vars.put("phone_code",response.toString()); //把结果赋值给变量phone_code ,方便后面调用
Python脚本:
在这里给大家讲解一下怎么利用cmd给Python脚本传参
废话不多说,直接上实例
import sys
print('有',len(sys.argv),'个参数')
print('参数类型type(sys.argv):',type(sys.argv))
print('打印参数:',sys.argv)
print('打印第一个参数:',sys.argv[0])
a=sys.argv[1]
b=sys.argv[2]
print(a,b,type(a),type(b))