jck28-lucio-多套被测环境

目录

  • 多套环境测试背景
  • 多套环境测试解决方案

多套环境测试背景

  • 集成测试环境
  • 验收测试环境
  • 灰度测试环境

多套环境测试解决方案

多套环境测试方案(一)

  • 痛点
    • 硬编码耦合
    • 维护成本高
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;

public class TestEnv {
    @Test
    void testOrg(){
        // 测试org环境接口
        given()
        .when()
            .get("http://httpbin.org/get")  // 发送GET请求
        .then()
            .statusCode(200);
    }

    @Test
    void testCeshiren(){
        // 测试ceshiren环境接口
        given()
        .when()
            .get("https://httpbin.ceshiren.com/get")  // 发送GET请求
        .then()
            .statusCode(200);
    }
}

多套环境测试方案(二)

优点
通过配置信息管理环境
痛点
多个测试文件维护成本高

import io.restassured.RestAssured;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.util.HashMap;
import static io.restassured.RestAssured.given;

public class TestEnvConf {

    @BeforeAll
    static void setupClass(){
        // 实例化环境配置对象
        HashMap<String, String> envs = new HashMap<>();
        // 测试环境1的域名配置
        envs.put("org", "http://httpbin.org/get");
        // 测试环境1的域名配置
        envs.put("ceshiren", "http://httpbin.ceshiren.com/get");

        // 选定默认环境名称,方便灵活切换
        envs.put("default", "org");

        // 设置基路径,值为选定的域名地址
        RestAssured.baseURI = envs.get(envs.get("default"));
    }

    @Test
    void testEnvs(){
        given()
        .when()
            .get("/get")  // 发送GET请求
        .then();
    }

}

多套环境测试方案(三)

最佳实践:配置文件

import com.fasterxml.jackson.core.type.TypeReference;
import com.fasterxml.jackson.databind.ObjectMapper;
import com.fasterxml.jackson.dataformat.yaml.YAMLFactory;
import io.restassured.RestAssured;
import org.junit.jupiter.api.BeforeAll;
import org.junit.jupiter.api.Test;
import java.io.File;
import java.io.IOException;
import java.util.HashMap;
import static io.restassured.RestAssured.given;

public class TestEnvYaml {

    @BeforeAll
    static void setupClass() throws IOException {
        /*
        使用Jackson读取yaml文件
         */

        // 实例化一个ObjectMapper 对象
        ObjectMapper objectMapper = new ObjectMapper(new YAMLFactory());
        // 读取 resources 目录中的envs.yaml文件
        ClassLoader classLoader = Thread.currentThread().getContextClassLoader();
        File yamlFile = new File(classLoader.getResource("envs.yaml").getFile());
        // 定义序列化的结构 TypeReference
        TypeReference<HashMap<String, String>> typeRef = new
                  TypeReference<HashMap<String, String>>() {};
        // 解析envs.yaml文件内容
        HashMap<String, String> envs = objectMapper.readValue(yamlFile, typeRef);
        // 设置基路径,值为选定的域名地址
        RestAssured.baseURI = envs.get(envs.get("default"));
    }

    @Test
    void testEnvs() {

        //发起请求
        given()
        .when()
                .get("/get")
        .then()
                .statusCode(200);
    }
}

附录:Jackson 依赖

jackson-databind
jackson-dataformat-yaml

com.fasterxml.jackson.core
jackson-databind
2.13.0
test


com.fasterxml.jackson.dataformat
jackson-dataformat-yaml
2.13.0