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

本文涉及的产品
云数据库 Tair(兼容Redis),内存型 2GB
Redis 开源版,标准版 2GB
推荐场景:
搭建游戏排行榜
简介: 1、案例描述用户选择短信登录 !

 

1、案例描述

    • 用户选择短信登录 !

    image.gif编辑

     

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

      image.gif编辑

       

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

        image.gif编辑

         

        image.gif编辑

         

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

          image.gif编辑

           

          2、解决思路

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

            3、开始动手

              image.gif编辑

               

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

                image.gif编辑

                 

                image.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

                  image.gif编辑

                   

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

                    image.gif编辑

                     

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

                      image.gif编辑

                       

                        • 查看结果 !

                        image.gif编辑

                        image.gif编辑

                        image.gif编辑

                         

                        4、总结

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

                        image.gif

                        image.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
                          相关文章
                          |
                          5天前
                          |
                          数据采集 数据可视化 数据挖掘
                          利用Python自动化处理Excel数据:从基础到进阶####
                          本文旨在为读者提供一个全面的指南,通过Python编程语言实现Excel数据的自动化处理。无论你是初学者还是有经验的开发者,本文都将帮助你掌握Pandas和openpyxl这两个强大的库,从而提升数据处理的效率和准确性。我们将从环境设置开始,逐步深入到数据读取、清洗、分析和可视化等各个环节,最终实现一个实际的自动化项目案例。 ####
                          |
                          24天前
                          |
                          NoSQL Redis
                          Redis的数据淘汰策略有哪些 ?
                          Redis 提供了 8 种数据淘汰策略,分为淘汰易失数据和淘汰全库数据两大类。易失数据淘汰策略包括:volatile-lru、volatile-lfu、volatile-ttl 和 volatile-random;全库数据淘汰策略包括:allkeys-lru、allkeys-lfu 和 allkeys-random。此外,还有 no-eviction 策略,禁止驱逐数据,当内存不足时新写入操作会报错。
                          52 16
                          |
                          2月前
                          |
                          监控 NoSQL Java
                          场景题:百万数据插入Redis有哪些实现方案?
                          场景题:百万数据插入Redis有哪些实现方案?
                          43 1
                          场景题:百万数据插入Redis有哪些实现方案?
                          |
                          2月前
                          |
                          数据采集 存储 JavaScript
                          自动化数据处理:使用Selenium与Excel打造的数据爬取管道
                          本文介绍了一种使用Selenium和Excel结合代理IP技术从WIPO品牌数据库(branddb.wipo.int)自动化爬取专利信息的方法。通过Selenium模拟用户操作,处理JavaScript动态加载页面,利用代理IP避免IP封禁,确保数据爬取稳定性和隐私性。爬取的数据将存储在Excel中,便于后续分析。此外,文章还详细介绍了Selenium的基本设置、代理IP配置及使用技巧,并探讨了未来可能采用的更多防反爬策略,以提升爬虫效率和稳定性。
                          109 4
                          |
                          24天前
                          |
                          缓存 NoSQL 关系型数据库
                          Redis和Mysql如何保证数据⼀致?
                          在项目中,为了解决Redis与Mysql的数据一致性问题,我们采用了多种策略:对于低一致性要求的数据,不做特别处理;时效性数据通过设置缓存过期时间来减少不一致风险;高一致性但时效性要求不高的数据,利用MQ异步同步确保最终一致性;而对一致性和时效性都有高要求的数据,则采用分布式事务(如Seata TCC模式)来保障。
                          55 14
                          |
                          24天前
                          |
                          存储 NoSQL 算法
                          Redis分片集群中数据是怎么存储和读取的 ?
                          Redis集群采用哈希槽分区算法,共有16384个哈希槽,每个槽分配到不同的Redis节点上。数据操作时,通过CRC16算法对key计算并取模,确定其所属的槽和对应的节点,从而实现高效的数据存取。
                          45 13
                          |
                          24天前
                          |
                          存储 NoSQL Redis
                          Redis的数据过期策略有哪些 ?
                          Redis 采用两种过期键删除策略:惰性删除和定期删除。惰性删除在读取键时检查是否过期并删除,对 CPU 友好但可能积压大量过期键。定期删除则定时抽样检查并删除过期键,对内存更友好。默认每秒扫描 10 次,每次检查 20 个键,若超过 25% 过期则继续检查,单次最大执行时间 25ms。两者结合使用以平衡性能和资源占用。
                          43 11
                          |
                          24天前
                          |
                          监控 NoSQL 测试技术
                          【赵渝强老师】Redis的AOF数据持久化
                          Redis 是内存数据库,提供数据持久化功能,支持 RDB 和 AOF 两种方式。AOF 以日志形式记录每个写操作,支持定期重写以压缩文件。默认情况下,AOF 功能关闭,需在 `redis.conf` 中启用。通过 `info` 命令可监控 AOF 状态。AOF 重写功能可有效控制文件大小,避免性能下降。
                          |
                          24天前
                          |
                          存储 监控 NoSQL
                          【赵渝强老师】Redis的RDB数据持久化
                          Redis 是内存数据库,提供数据持久化功能以防止服务器进程退出导致数据丢失。Redis 支持 RDB 和 AOF 两种持久化方式,其中 RDB 是默认的持久化方式。RDB 通过在指定时间间隔内将内存中的数据快照写入磁盘,确保数据的安全性和恢复能力。RDB 持久化机制包括创建子进程、将数据写入临时文件并替换旧文件等步骤。优点包括适合大规模数据恢复和低数据完整性要求的场景,但也有数据完整性和一致性较低及备份时占用内存的缺点。
                          |
                          2月前
                          |
                          NoSQL 测试技术 Redis
                          Redis 性能测试
                          10月更文挑战第21天
                          43 2