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

需求分析

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

代码实现

目录结构

│  .gitignore
│  RedisCode.iml
│
├─.idea
│  │  .gitignore
│  │  misc.xml
│  │  modules.xml
│  │  uiDesigner.xml
│  │  workspace.xml
├─out
│  └─production
│      └─RedisCode
│          └─com
│              └─chenguoxin
│                      RedisCode.class
│
└─src
    └─com
        └─chenguoxin
                RedisCode.java

具体代码

RedisCode.java

package com.chenguoxin;
import redis.clients.jedis.Jedis;
import java.util.HashMap;
import java.util.Map;
/**
 * @author chenguoxin
 */
public class RedisCode {
    public static String getCode(String huanjing, String key) {

        Map<String, String[]> list = new HashMap<>();
        list.put("ceshi-dsjj", new String[]{"项目的redis地址", "端口", "redis密码"});

        String[] huanjinginfo = list.get(huanjing);
        // 创建Jedis对象,并指定Redis服务器的IP和端口
        Jedis jedis = new Jedis(huanjinginfo[0], Integer.parseInt(huanjinginfo[1]));

//         使用auth方法进行密码认证(如果有设置密码的话)
        jedis.auth(huanjinginfo[2]);
        jedis.select(5);
        // 通过键值获取value
        String value = jedis.get(key);
        System.out.println("Value: " + value);

        // 关闭连接
        jedis.close();
        return value;
    }
}

BeanShell脚本

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

注意事项

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

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

解决方法

下载两个JAR包即可

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

下载 slf4j-apislf4j-simple 即可解决

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

接口测试自动化测试软件测试

JAVA实现RSA加密并在Jmeter/测试平台中调用

2023-6-7 17:31:52

JAVA接口测试

java实现接口测试中AES加密后Base64加密请求体数据

2024-2-2 11:26:12

0 条回复 A文章作者 M管理员
    暂无讨论,说说你的看法吧
个人中心
今日签到
有新私信 私信列表
搜索