如何读取redis的手机号验证码数据,实现自动化登录测试

liam
• 阅读 200

1、案例描述

  • 用户选择短信登录 !

如何读取redis的手机号验证码数据,实现自动化登录测试

  • 发送短信后,后端接口逻辑已把验证码缓存在redis, !

如何读取redis的手机号验证码数据,实现自动化登录测试

  • apifox上定义对应下发登录短信接口短信登录接口
  • 下载地址:www.apifox.cn

如何读取redis的手机号验证码数据,实现自动化登录测试

如何读取redis的手机号验证码数据,实现自动化登录测试

  • 这时候问题就来了,怎么样才能让apifox自动获取下发登录短信接口对应的手机号的验证码,自动填充到短信登录接口code字段?

如何读取redis的手机号验证码数据,实现自动化登录测试

2、解决思路

  • 方案一:后端通过接口返回验证码,下发短信接口后再调用该接口去获取验证码(正式环境需要屏蔽该接口,没办法自动化正式环境接口)
  • 方案二:apifox直接访问redis获取数据;这需要在apifox添加扩展操作redis的jar包,参考:https://www.apifox.cn/help/app/scripts/api-references/external-programs/ (该方案比较可行)

3、开始动手

如何读取redis的手机号验证码数据,实现自动化登录测试

  • phonecode请求参数给为临时变量{{phone}}{{code}}

如何读取redis的手机号验证码数据,实现自动化登录测试

如何读取redis的手机号验证码数据,实现自动化登录测试

try {
    // redis 连接配置
    var redisConfig = "{"host":"192.168.181.130","password":"123456","database":0}";
    // 获取当前登录的手机号
    var phone = pm.variables.get("phone");
    // 后端服务缓存验证码在redis的key
    var key = "DEFAULT_CODE_KEY:" + phone;
    console.log("redis key:", key);
    // 执行jar包获取redis缓存数据
    var jarResult = pm.execute('apifox-redis-1.0-SNAPSHOT.jar', [redisConfig, "GET", key]);
    console.log("redis 缓存数据:", jarResult);
    // 反序列化异常处理
    var code = jarResult.substr(jarResult.length-7, 6);
    // 自动填充验证码到登录接口的`code`字段
    pm.variables.set("code", code);
    console.log("验证码:", code);
} catch (e) {
    console.error(e.message);
}

如何读取redis的手机号验证码数据,实现自动化登录测试

  • 新增测试数据,这里新增手机号对应临时变量{{phone}}

如何读取redis的手机号验证码数据,实现自动化登录测试

  • 注意: 需要打开测试数据开关,后点击运行

如何读取redis的手机号验证码数据,实现自动化登录测试

  • 查看结果 !

如何读取redis的手机号验证码数据,实现自动化登录测试

如何读取redis的手机号验证码数据,实现自动化登录测试

如何读取redis的手机号验证码数据,实现自动化登录测试

4、总结

apifox提供了非常好的自动化测试接口的功能

如何读取redis的手机号验证码数据,实现自动化登录测试

参考demo源码

# 后端接口服务源码
https://github.com/Atoms-Cat/softswitch-system
​
# apifox 扩展操作 redis jar源码 
https://github.com/Atoms-Cat/apifox-code
点赞
收藏
评论区
推荐文章
Stella981 Stella981
1年前
Postman
一,自动化传参在实现接口自动测试的时候,会经常遇到接口参数依赖的问题,例如调取登录接口的时候,需要先获取登录的key值,而每次请求返回的key值又是不一样的,那么这种情况下,要实现接口的自动化,就要用到postman中设置环境变量这个功能了;在postman中,可以利用tests将接口返回的response设置为环境变量,供后续接口使用(类似参数化的
Wesley13 Wesley13
1年前
JAVA接入短信接口,实现短信验证码功能
最近网站要加短信验证功能,不得不要折腾一番。好了,不多说了,说一下过程。首先是短信服务商的选择,以前没接触过,只能找度娘了,找了三家,对比一下。价格:1、秒嘀科技(https://www.oschina.net/action/GoToLink?urlhttp%3A%2F%2Fwww.miaodiyun.com)短信接口、短信验证码、语音验
Stella981 Stella981
1年前
Spring security(四)
关注我,可以获取最新知识、经典面试题以及技术分享  现在主流的登录方式主要有3种:账号密码登录、短信验证码登录和第三方授权登录,前面一节Springsecurity(三)认证过程(https://my.oschina.net/ccwwlx/blog/3115960)已分析了springsecurity账号密码方式登陆,现在我们来分析
Easter79 Easter79
1年前
Vue 前端验证码
⭐前言在vue项目中,登录界面必不可少。简单项目里,验证码通常由数字字母构成。一般有两种产生方式:前端,后端。后端生成,前端直接调用接口,将返回的url放入a标签即可。而前端生成,则大多用canvas画布实现,如何让验证码随屏幕大小变化,还能保持原样不失真,这就是我们要实现的功能。当然,在创建vue项目时,我们必须得克服跨域问题。No'
Stella981 Stella981
1年前
Spring Security构建Rest服务
浏览器模式下验证码存储策略浏览器模式下,生成的短信验证码或者图形验证码是存在session里的,用户接收到验证码后携带过来做校验。!(https://oscimg.oschina.net/oscnet/75774cf1ab5780bbf370ae42d1eff49e777.png)APP模式下验证码存储策略
Stella981 Stella981
1年前
Jenkins设置运行结果自动发送邮箱通知
Jenkins设置运行结果自动发送邮箱通知1获取邮箱授权码登录邮箱选择“设置”开启IMAP/SMTP服务开启后需要通过手机发送短信到线上获取授权码!(https://img2018.cnblogs.com/blog/1798505/201909/1798505201909280544535181522354728.png)例如我
Wesley13 Wesley13
1年前
IOS程序内发短信 MFMessageComposeViewController
文章转载地址:http://www.headsky.org/?p63iOS4.0新加入了MFMessageComposeViewController和MFMessageComposeViewControllerDelegate,提供了发送短信的接口,可以像发送邮件那样不用跳出程序来发送短信.介绍可参阅MessageUIFrameworkRe
Stella981 Stella981
1年前
Spring Security使用详解7(注销登录配置)
默认情况下,SpringSecurity提供了注销接口是/logout,访问这个接口即可注销当前登录用户并且自动跳转到登录页。如果需要修改注销接口,或者想在注销时做一些业务逻辑,或者注销后不是跳转到登录页而是返回一段JSON提示,只需在一些简单配置即可。七、注销登录配置1、样例代码首先修改SpringSecurit
爬虫程序大魔王 爬虫程序大魔王
10个月前
不用自己的手机怎么接短信?
在日常生活中,电子邮件和手机号码是我们登录网站或APP应用程序的主要方式。但是,对于某些使用频率较低或平台较小的电商网站,我们始终担心我们的隐私和安全性以及持续骚扰短信和垃圾邮件。如何避免这些问题?我们可以使用临时虚拟手机号码接码平台,接收手机短信验证码。这样就可以很好的保护我们的隐私,当然,有些涉及金融和比较重要的网站我们还是不能用这类型的网站,毕竟所有人
把帆帆喂饱 把帆帆喂饱
2个月前
Springboot整合Redis实现邮箱验证码
Springboot整合Redis实现邮箱验证码开启邮箱服务打开https://mail.qq.com/登录你自己的qq账号选择账户点击开启STMP服务:发送短信:发送完,点击我已发送,然后得到密码:Springboot配置邮箱pom依赖xmlorg.sp