写点什么

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

作者:Liam
  • 2022 年 8 月 11 日
    广东
  • 本文字数:1011 字

    阅读完需:约 3 分钟

1、案例描述

  • 用户选择短信登录 !



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



  • apifox上定义对应下发登录短信接口短信登录接口

  • 下载地址:www.apifox.cn




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


2、解决思路

  • 方案一:后端通过接口返回验证码,下发短信接口后再调用该接口去获取验证码(正式环境需要屏蔽该接口,没办法自动化正式环境接口)

  • 方案二:apifox直接访问 redis 获取数据;这需要在apifox添加扩展操作 redis 的 jar 包,参考:https://www.apifox.cn/help/app/scripts/api-references/external-programs/ (该方案比较可行)

3、开始动手



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





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);}
复制代码



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



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



  • 查看结果 !




4、总结

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


参考 demo 源码

# 后端接口服务源码https://github.com/Atoms-Cat/softswitch-system# apifox 扩展操作 redis jar源码 https://github.com/Atoms-Cat/apifox-code
复制代码


用户头像

Liam

关注

没有一个bug是无辜的! 2021.12.23 加入

一个简单的程序员!

评论

发布
暂无评论
如何读取redis的手机号验证码数据,实现自动化登录测试_程序员_Liam_InfoQ写作社区