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

简介: 1、案例描述 用户选择短信登录 !
+关注继续查看

 

1、案例描述

    • 用户选择短信登录 !

    imageimage.gif编辑

     

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

      imageimage.gif编辑

       

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

        imageimage.gif编辑

         

        imageimage.gif编辑

         

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

          imageimage.gif编辑

           

          2、解决思路

            • 方案一:后端通过接口返回验证码,下发短信接口后再调用该接口去获取验证码(正式环境需要屏蔽该接口,没办法自动化正式环境接口)
            • 方案二:apifox直接访问redis获取数据;这需要在apifox添加扩展操作redis的jar包,参考:脚本调用其他语言( java、python、php 等) | Apifox 使用文档 (该方案比较可行)

            3、开始动手

              imageimage.gif编辑

               

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

                imageimage.gif编辑

                 

                imageimage.gif编辑

                 

                  • 新建短信登录用例前置自定义脚本,这里的apifox-redis-1.0-SNAPSHOT.jar,就是第一步生成好的jar;脚本编写可以参考:前置脚本 | Apifox 使用文档
                  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);
                  }

                  image.gif

                  imageimage.gif编辑

                   

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

                    imageimage.gif编辑

                     

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

                      imageimage.gif编辑

                       

                        • 查看结果 !

                        imageimage.gif编辑

                        imageimage.gif编辑

                        imageimage.gif编辑

                         

                        4、总结

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

                        image.gif

                        imageimage.gif编辑

                         

                        参考demo源码

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

                        image.gif

                          相关实践学习
                          基于Redis实现在线游戏积分排行榜
                          本场景将介绍如何基于Redis数据库实现在线游戏中的游戏玩家积分排行榜功能。
                          云数据库 Redis 版使用教程
                          云数据库Redis版是兼容Redis协议标准的、提供持久化的内存数据库服务,基于高可靠双机热备架构及可无缝扩展的集群架构,满足高读写性能场景及容量需弹性变配的业务需求。 产品详情:https://www.aliyun.com/product/kvstore     ------------------------------------------------------------------------- 阿里云数据库体验:数据库上云实战 开发者云会免费提供一台带自建MySQL的源数据库 ECS 实例和一台目标数据库 RDS实例。跟着指引,您可以一步步实现将ECS自建数据库迁移到目标数据库RDS。 点击下方链接,领取免费ECS&RDS资源,30分钟完成数据库上云实战!https://developer.aliyun.com/adc/scenario/51eefbd1894e42f6bb9acacadd3f9121?spm=a2c6h.13788135.J_3257954370.9.4ba85f24utseFl
                          相关文章
                          |
                          24天前
                          |
                          NoSQL Linux Redis
                          Linux系列——Redis的安装、测试
                          Linux系列——Redis的安装、测试
                          |
                          2月前
                          |
                          缓存 NoSQL 前端开发
                          redis单机版安装+测试+项目运用
                          Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型、Key-Value数据库,并提供多种语言的API。
                          |
                          2月前
                          |
                          NoSQL Redis 数据中心
                          Redis 集群偶数节点跨地域部署之高可用测试
                          你搭建过偶数节点的 Redis 集群吗?有没有想过它是否具备高可用的能力?会不会脑裂呢?实践出真知!现在 docker 太方便了,搭一个集群模拟一下……
                          59 4
                          |
                          8月前
                          |
                          缓存 NoSQL API
                          分布式服务器框架之Servers.Common中使用CSRedis测试操作Redis中的string、hash_table、list、set、zset
                          在Servers.Common类库总创建了一个TestRedis.cs文件,我是在Servers.GameServer中去初始化的。主要是测试了Redis中常用的数据类型和常用的API,有一些不常用的可能没有写。需要详细了解API的话可以安装上CSRedis之后F12追进去查看,上面有详细的API说明。
                          分布式服务器框架之Servers.Common中使用CSRedis测试操作Redis中的string、hash_table、list、set、zset
                          |
                          9月前
                          |
                          NoSQL Linux Redis
                          Docker | redis安装及测试
                          Docker | redis安装及测试
                          138 0
                          Docker | redis安装及测试
                          |
                          9月前
                          |
                          NoSQL 网络安全 Redis
                          flink测试redis sink报错
                          flink测试redis sink报错
                          |
                          10月前
                          |
                          数据采集 NoSQL Java
                          Lua 脚本读取 redis 数据|学习笔记
                          快速学习 Lua 脚本读取 redis 数据
                          559 0
                          Lua 脚本读取 redis 数据|学习笔记
                          |
                          10月前
                          |
                          NoSQL 大数据 Redis
                          环境篇之 redis 的主从部署及测试|学习笔记
                          快速学习环境篇之 redis 的主从部署及测试
                          65 0
                          |
                          10月前
                          |
                          NoSQL 大数据 Linux
                          环境篇之 redis 的 linux 和 Windows 测试|学习笔记
                          快速学习环境篇之 redis 的 linux 和 Windows 测试
                          63 0
                          环境篇之 redis 的 linux 和 Windows 测试|学习笔记
                          |
                          10月前
                          |
                          消息中间件 NoSQL Redis
                          Redis 入门:测试 redis| 学习笔记
                          快速学习 Redis 入门:测试 redis。
                          77 0
                          相关产品
                          云迁移中心
                          推荐文章
                          更多