jck28-lucio-代理配置

代理简介

  • 介于客户端与服务器之间
  • 可以监听请求和响应信息
  • 充当防火墙和 Web 过滤器

代理前后对比

title 使用代理之前
scale 200 width
scale 400 height
autonumber
participant 客户端 as client
participant 服务端 as server

client → server: 发起请求
server → client: 返回响应

title 使用代理之后
scale 200 width
scale 400 height
autonumber
participant 客户端 as client
participant 代理 as proxy
participant 服务端 as server

client → proxy: 发起请求
proxy → server: 转发请求
server → proxy: 返回响应
proxy → client: 转发响应

代理与接口测试

  • 更直观的排查请求错误
    • 获取正确的的接口请求与响应信息
    • 开启代理工具监听请求
    • 获取自动化测试的请求与响应信息
    • 对比两次请求响应的区别

REST assured 使用代理

  • 开启代理工具监听请求
  • 配置代理
    • 局部:通过 proxy() 方法
    • 全局:定义 proxy 对象

使用代理请求 HTTP

import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;

import static io.restassured.RestAssured.given;
import static io.restassured.specification.ProxySpecification.host;

public class TestHttpProxyConf {

    @Test
    void testHTTPProxy() {

        // 定义一个代理的配置信息
        RestAssured.proxy = host("localhost").withPort(8888);

        given()
                .proxy(8888)  // 设置代理
        .when()
                .get("http://httpbin.org/get")  // 发送 HTTP请求
        .then()
                .log().all()  // 打印完整响应信息
                .statusCode(200);  // 响应断言
    }
}
使用代理请求 HTTPS
import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;

import static io.restassured.RestAssured.given;
import static io.restassured.specification.ProxySpecification.host;


public class TestHttpsProxyConf {

    @Test
    void testHTTPProxy() {

        // 定义一个代理的配置信息
        RestAssured.proxy = host("localhost").withPort(8888);

        given()
                .relaxedHTTPSValidation()  // 忽略HTTPS校验
        .when()
                .get("https://httpbin.ceshiren.com/get")
        .then()
                .log().all()  // 打印完整响应信息
                .statusCode(200);  // 响应断言
    }
}

使用代理请求 HTTPS

import io.restassured.RestAssured;
import org.junit.jupiter.api.Test;

import static io.restassured.RestAssured.given;
import static io.restassured.specification.ProxySpecification.host;


public class TestHttpsProxyConf {

    @Test
    void testHTTPProxy() {

        // 定义一个代理的配置信息
        RestAssured.proxy = host("localhost").withPort(8888);

        given()
                .relaxedHTTPSValidation()  // 忽略HTTPS校验
        .when()
                .get("https://httpbin.ceshiren.com/get")
        .then()
                .log().all()  // 打印完整响应信息
                .statusCode(200);  // 响应断言
    }
}