使用手机验证码实现登录,调用了两个接口,一是发送短信验证码,二是用户登录。
思路:
1.使用CSV Data Set Config参数化;
2.获取时间戳;
3.发送短信验证码;
4.使用BeanShell取样器从redis缓存中获取短信验证码;
5.用户登录;
6.使用jp@gc - JSON/YAML Path Extractor获取token;
7.使用CSV Data Set Config将token写入csv文件。
思路理清楚了,开干!!!
一、使用CSV Data Set Config参数化
二、获取时间戳
大家一定很好奇,获取时间戳干嘛使啊,那是因为发送短信验证码接口的入参包含了时间戳,如步骤二所示。
使用BeanShell取样器获取时间戳
备注:timestamp以${timestamp}的形式被同一线程组内的线程引用。
三、HTTP请求-发送短信验证码
备注:变量${phone}
是步骤一中设置的变量phone,变量${timestamp}
是步骤二生成的时间戳
四、使用BeanShell取样器从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脚本:
五、HTTP请求-用户登录
备注:变量
a
e
s
p
h
o
n
e
是
步
骤
一
中
设
置
的
变
量
a
e
s
p
h
o
n
e
,
变
量
{aes_phone}是步骤一中设置的变量aes_phone,变量
aesphone是步骤一中设置的变量aesphone,变量{phone_code}是步骤四从redis缓存中获取的短信验证码
六、使用jp@gc - JSON/YAML Path Extractor获取token
接口返回的json响应结果格式如下所示
{
“msg”:“登录成功”,
“code”:“1”,
“data”:{
“userType”:“01”,
“accessToken”:“fadc8c84b548e7508a4b3f78489”
}
}
1.安装插件JSON/YAML Plugins;
2.添加一个jp@gc - JSON/YAML Path Extractor;
备注:token以${token}的形式被后续请求引用
七、使用BeanShell后置处理程序将token写入csv文件
代码:
FileWriter fstream = new FileWriter("D:\\朗新科技\\项目资料\\锡证通\\性能测试\\token.csv", true);//定义本地文件路径
BufferedWriter out = new BufferedWriter(fstream);
out.write(vars.get("phone"));//写入手机号
out.write(",");//换列
out.write(vars.get("token"));//写入token
out.write(System.getProperty("line.separator"));//换行
out.close();
fstream.close();
备注:token值为error的数据,是因为手机号没有被注册,所以回写缺省值error