IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> Java知识库 -> springboot + yml + redis + HttpClient 实现自动化测试 -> 正文阅读

[Java知识库]springboot + yml + redis + HttpClient 实现自动化测试

springboot + yml + redis + HttpClient 实现自动化测试

原创,请勿转载!!!!!
要是实现了,帮忙点个赞!!!!!

目录

1、使用技术;
2、jar包依赖;
3、准备;
4、实现效果。

1、使用技术;

1、springbot 框架;
2、forest-spring-boot-starter http请求jar包;
3、redis;
4、Yml文件;

2、jar包依赖;

父级依赖springboot

<dependencies>
        <dependency>
            <groupId>com.dtflys.forest</groupId>
            <artifactId>forest-spring-boot-starter</artifactId>
            <version>1.5.13</version>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.yaml</groupId>
            <artifactId>snakeyaml</artifactId>
        </dependency>
        <!-- https://mvnrepository.com/artifact/org.springframework.boot/spring-boot-starter-data-redis -->
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-data-redis</artifactId>
            <version>2.7.0</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>3.8.1</version>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
        </dependency>
    </dependencies>

3、准备;

3.1 HttpClient

import com.dtflys.forest.annotation.*;
/**
 * @author yinxing
 * @date 2022-08-23
 */
public interface ClientHttp {

    /**
     * Get请求
     * @param url 访问的url地址
     * @param header 请求头信息
     */
    @Get(url = "{0}")
    public Object sendGet(String url, @Header Object header);

    /**
     * Post请求
     * @param url 请求url地址
     * @param header 请求头信息
     * @param param 请求参数,JSON转换
     */
    @Post(url = "{0}")
    public Object sendPost(String url,@Header Object header,@JSONBody Object param);

}

2、Yml文件固定格式

#Get请求接口示列
test:
  type: Get
  url: http://localhost:8003/hello
  header: {
    yx-token: keyi,
    abc: aaa
  }
  request: {
    source: "shop"
  }
  response: {
    code: 200,
    message: success
  }
#Post请求接口示列
testPost:
  type: Post
  url: http://localhost:8003/testPost
  header: {
    yx-token: keyi,
    abc: aaa
  }

  request: {
    abc: "av"
  }
  response: {
    code: 200,
    message: success
  }

3.3HttpService

/**
 * @author yinxing
 * @date 2022-08-24
 */
public interface HttpService {
    /**
     * case请求
     * @param fileName
     * @param methodName
     * @return
     * @throws FileNotFoundException
     */
    public String caseHttp(String fileName,String methodName) throws FileNotFoundException;

    /**
     * 登录
     * @return
     * @throws FileNotFoundException
     */
    String login() throws FileNotFoundException;
}

3.4HttpServiceImpl


import com.yx.auto.contanct.Constant;
import com.yx.auto.http.ClientHttp;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.stereotype.Service;
import org.yaml.snakeyaml.Yaml;

import javax.annotation.Resource;
import java.io.BufferedReader;
import java.io.FileNotFoundException;
import java.io.FileReader;
import java.util.Map;
import java.util.concurrent.TimeUnit;

/**
 * @author yinxing
 * @date 2022-08-24
 */
@Service
public class HttpServiceImpl implements HttpService{

    @Resource
    private ClientHttp clientHttp;

    @Resource
    private RedisTemplate<String, String> redisTemplate;

    @Override
    public String caseHttp(String fileName,String methodName) throws FileNotFoundException {
        Yaml yaml = new Yaml();
        FileReader fileReader = new FileReader(this.getClass().getClassLoader().getResource(fileName).getPath());
        BufferedReader buffer = new BufferedReader(fileReader);
        Map<String, Object> map = yaml.load(buffer);
        Map<String, Object> method;
        method = (Map<String, Object>) map.get(methodName);
        if (method.get(Constant.type).equals(Constant.get)) {
            Object o = clientHttp.sendGet(method.get(Constant.header).toString(), method.get(Constant.header));
            System.out.println(o.toString());
        } else {
            Map<String, Object> header = (Map<String, Object>) method.get(Constant.header);
            for (Map.Entry<String, Object> headerOne : header.entrySet()) {
                if (headerOne.getKey().contains("x-ts")) {
                    header.put("x-ts", System.currentTimeMillis());
                }
                if (headerOne.getValue().toString().contains(Constant.redis)){
                    String split = headerOne.getValue().toString().
                            substring(headerOne.getValue().toString().lastIndexOf('.')+1);
                    header.put(headerOne.getKey(),redisTemplate.opsForValue().get(split));
                }
            }
            Map<String, Object> requests = (Map<String, Object>) method.get(Constant.request);
            for (Map.Entry<String, Object> request : requests.entrySet()) {
                if (request.getValue().toString().contains(Constant.redis)){
                    String split = request.getValue().toString().
                            substring(request.getValue().toString().lastIndexOf('.')+1);
                    requests.put(request.getKey(),redisTemplate.opsForValue().get(split));
                }
            }
            Object o = clientHttp.sendPost(method.get(Constant.url).toString(), header, requests);
            System.out.println(o.toString());
        }
        return "success";
    }

    @Override
    public String login() throws FileNotFoundException {
        Yaml yaml = new Yaml();
        FileReader fileReader = new FileReader(this.getClass().getClassLoader().getResource("login.yml").getPath());
        BufferedReader buffer = new BufferedReader(fileReader);
        Map<String, Object> map = yaml.load(buffer);
        Map<String, Object> method = (Map<String, Object>) map.get("login");
        if (method.get("type").equals("Get")) {
            Object o = clientHttp.sendGet(method.get("url").toString(), method.get("header"));
            System.out.println(o.toString());
        } else {
            Map<String, Object> header = (Map<String, Object>) method.get("header");
            if (header.get("x-ts") != null) {
                header.put("x-ts", System.currentTimeMillis());
            }
            if (header.get("accessToken") != null) {
                Object accessToken = redisTemplate.opsForValue().get("accessToken");
                if (accessToken == null) {

                }
                header.put("accessToken", redisTemplate.opsForValue().get("accessToken"));
            }
            Map<String, Object> request = (Map<String, Object>) method.get("request");
            Object o = clientHttp.sendPost(method.get("url").toString(), header, request);
            System.out.println(o.toString());
            Map<String, Object> result = (Map<String, Object>) o;
            Map<String, Object> content = (Map<String, Object>) result.get("content");
            redisTemplate.opsForValue().set("accessToken", content.get("accessToken").toString(), Long.parseLong(content.get("accessTokenExpireIn").toString()), TimeUnit.SECONDS);
            redisTemplate.opsForValue().set("userId",content.get("userId").toString());
            String accessToken = redisTemplate.opsForValue().get("accessToken");
            System.out.println("登录凭证accessToken:" + accessToken);
        }
        return null;
    }

}

4、实现效果。

4.1DemoController

import com.yx.auto.http.ClientHttp;
import com.yx.auto.service.HttpService;
import org.springframework.data.redis.core.RedisTemplate;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import javax.annotation.Resource;
import java.io.FileNotFoundException;

/**
 * @author yinxing
 * @date 2022-08-23
 */
@RestController
public class DemoController {

    @Resource
    private HttpService httpService;

    /**
     * szy
     *
     * @return
     * @throws FileNotFoundException
     */
    @RequestMapping("/szy")
    public String login() throws FileNotFoundException {
        httpService.login();
        //调用接口,yml文件名,方法名
        httpService.caseHttp("szy.yml", "getEbookDeptInfo");
        httpService.caseHttp("demo.yml", "getPersonalDetailfromebook");
        return "Success";
    }
}

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  Java知识库 最新文章
计算距离春节还有多长时间
系统开发系列 之WebService(spring框架+ma
springBoot+Cache(自定义有效时间配置)
SpringBoot整合mybatis实现增删改查、分页查
spring教程
SpringBoot+Vue实现美食交流网站的设计与实
虚拟机内存结构以及虚拟机中销毁和新建对象
SpringMVC---原理
小李同学: Java如何按多个字段分组
打印票据--java
上一篇文章      下一篇文章      查看所有文章
加:2022-09-13 10:59:34  更:2022-09-13 11:01:29 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/23 12:11:24-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码