Java实现登录接口在redis中根据key值获取验证码

  • JAVA

  • 1 年前
  • 0
  • 629

需求分析

在自动化测试中,登录接口的验证码的处理有两种常见的方案,第一种是通过ocr识别,这种方式不能保证百分百正确,通常用在UI自动化测试中。第二种是去数据库中直接查询验证码,这种方式可以保证验证码百分百正确,一般验证码都是保存在redis中,通常用在接口自动化测试中。这里我们给出第二种方案。

代码实现

目录结构


 
  1. │ .gitignore
  2. │ RedisCode.iml
  3. ├─.idea
  4. │ │ .gitignore
  5. │ │ misc.xml
  6. │ │ modules.xml
  7. │ │ uiDesigner.xml
  8. │ │ workspace.xml
  9. ├─out
  10. │ └─production
  11. │ └─RedisCode
  12. │ └─com
  13. │ └─chenguoxin
  14. │ RedisCode.class
  15. └─src
  16. └─com
  17. └─chenguoxin
  18. RedisCode.java

具体代码

RedisCode.java


 
  1. package com.chenguoxin;
  2. import redis.clients.jedis.Jedis;
  3. import java.util.HashMap;
  4. import java.util.Map;
  5. /**
  6. * @author chenguoxin
  7. */
  8. public class RedisCode {
  9. public static String getCode(String huanjing, String key) {
  10.  
  11. Map<String, String[]> list = new HashMap<>();
  12. list.put("ceshi-dsjj", new String[]{"项目的redis地址", "端口", "redis密码"});
  13.  
  14. String[] huanjinginfo = list.get(huanjing);
  15. // 创建Jedis对象,并指定Redis服务器的IP和端口
  16. Jedis jedis = new Jedis(huanjinginfo[0], Integer.parseInt(huanjinginfo[1]));
  17.  
  18. // 使用auth方法进行密码认证(如果有设置密码的话)
  19. jedis.auth(huanjinginfo[2]);
  20. jedis.select(5);
  21. // 通过键值获取value
  22. String value = jedis.get(key);
  23. System.out.println("Value: " + value);
  24.  
  25. // 关闭连接
  26. jedis.close();
  27. return value;
  28. }
  29. }

BeanShell脚本


 
  1. import com.chenguoxin.RedisCode;
  2. String huanjing = "ceshi-dsjj";//环境
  3. String key = ${sessionId}
  4. String captcha = RedisCode.getCode();
  5. vars.put("captcha", captcha);//设置获取到的验证码为全局变量

注意事项

IDEA运行redis多线程访问报错Exception in thread “main“ java.lang.NoClassDefFoundError: org/slf4j/LoggerFactory

解决方法

下载两个JAR包即可

托管下载地址:Central Repository: org/slf4j (maven.org)

下载 slf4j-api 和 slf4j-simple 即可解决

点进去以后选择版本,然后点击版本进入,找到.jar结尾的下载即可,api 和 simple版本要统一

你可能感兴趣的