jck28-lucio-接口请求参数

目录

  • 请求参数简介
  • 请求参数构造
  • RESTAssured 的基本使用

课程目标

  1. 掌握请求参数的概念。
  2. 掌握如何设置请求参数。
  3. 了解 RESTAssured 的基本结构与基本的使用方法。

思考

同样都是“参数”,这两者之间有什么区别?

请求参数简介

案例: 'requests' 的搜索结果 - 测试人社区

  • 接口请求中携带的,会在路径之后使用?代表客户端向服务端传递的参数。
  • 使用 key=value 形式拼接在 URL 中。
  • 如果有多个,则使用&分隔

应用场景

  • 条件查询接口。
  • 鉴权接口。
  • 其他接口(具体依据接口文档)。

携带请求参数的方式

  • 方式一:直接拼接在 URL 中:
    • ?username=Hogwarts&id=666
  • 方式二:通过given()queryParam()传递:
    • queryParam():单个URL参数。
    • queryParams():多个URL参数
package com.ceshiren.params;

import org.junit.jupiter.api.Test;

import java.util.HashMap;

import static io.restassured.RestAssured.given;
import static io.restassured.RestAssured.when;

public class TestParams {
    @Test
    void getURLReq(){
        when()
                .get("https://httpbin.ceshiren.com/get?name=ad&scholl=hogwarts")
                .then()
                .log().all();
    }
    @Test
    void getQueryParamReq(){

        given().log().all()
                .queryParam("name", "ad")
                .queryParam("school", "hogwarts")
                .when()
                .get("https://httpbin.ceshiren.com/get")
                .then()
                .log().all();
    }

    @Test
    void getQueryParamsReq(){
        // 构造请求参数
        HashMap<String, Object> query = new HashMap<>();
        query.put("name", "ad");
        query.put("school", "hogwarts");
        // 在请求中携带参数信息
        given().log().all()
                .queryParams(query)
                .when()
                .get("https://httpbin.ceshiren.com/get")
                .then()
                .log().all();
    }
    @Test
    void postQueryParamsReq(){
        // 构造请求参数
        HashMap<String, Object> query = new HashMap<>();
        query.put("name", "ad");
        query.put("school", "hogwarts");
        // 在请求中携带参数信息
        given().log().all()
                .queryParams(query)
                .when()
                .post("https://httpbin.ceshiren.com/post")
                .then()
                .log().all();
    }
}

接口测试框架基本使用

title 向女友表白

actor 彭于晏 as p
participant 环球影城 as h
actor 女神 as n
group 准备
p → h: 去环球影城准备表白现场
end
group 执行
h → n: 开始表白
end
group 反馈
n → n: 同意
n ->x n: 或者拒绝
end

title RESTAssured 三剑客

participant “given()” as p
participant “when()” as h
participant “then()” as n
group 准备
p → h: 设置测试预设
end
group 执行
h → n: 所要执行的请求动作
end
group 反馈
n → n: 解析结果、断言成功
n ->x n: 解析结果、断言失败
end

示例代码

image

given()
// given 设置测试预设
.header(“Hello”, “Hogwarts”)
.when()
// when 所要执行的请求动作
.get(“https://httpbin.ceshiren.com/get”)
.then()
// then 解析结果、断言
.log().all(); // 打印全部响应信息(响应头、响应体、状态等等)

准备数据:given()

  • 打印请求全部日志: log().all()
  • URL请求参数: queryParam()
  • 设置 Content-Type(后面具体学习): contentType()
  • 添加 header(后面具体学习): headers()
  • 添加cookie(后面具体学习): cookie()
  • 请求体(后面具体学习): body()
  • 其他:…

发送请求:when()

  • get请求: get()
  • post请求: post()
  • put请求: put()
  • delete请求: delete()

验证返回结果:then()

  • 打印全部日志: log().all()
  • 验证响应(后面具体学习): body()
  • 验证响应状态码(后面具体学习): statusCode()
  • 其他(后面具体学习):…

源码地址

gitlab.stuq.ceshiren.com