Skip to content

接口请求体-form表单

接口请求体 - form 表单

简介

在自动化测试过程中,Form 请求代表请求体为表单类型,其特点为:数据量不大、数据层级不深的情况、使用键值对传递,Form 请求头中的 content-type通常对应为 application/x-www-form-urlencoded。碰到这种类型的接口,使用 Python 的 Requests 方法。

使用场景

在进行搜索、登录的时候,可以使用 form 表单进行填写数据。

Python 演示代码

在 Python 中,可以使用 data 参数传输表单数据,data 参数以字典的形式,字典是以键值对的形式出现。

import requests
import pprint
def req():
    data = {
        "school": "hogwarts"
    }
    r = requests.post("https://httpbin.ceshiren.com/post",data=data)
    pprint.pprint(r.json())
req()

运行结果:

{
  "args": {},
  "data": "",
  "files": {},
  "form": {
    "school": "hogwarts"
  },
  ...省略...
  "json": None,
  "origin": "36.112.118.254, 182.92.156.22",
  "url": "https://httpbin.ceshiren.com/post"
}

Java 演示代码

  • 调用 formParam() 方法
package ch03_form;

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

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

/**
 * 测试使用表单参数发送POST请求。
 */
public class TestFormParam {

    /**
     * 使用表单参数发送POST请求并通过HTTPS代理服务器转发请求。
     * <p>
     * 此测试用例将向https://httpbin.ceshiren.com/post发送一个包含表单参数的POST请求,
     * 并验证响应状态码是否为200。
     */
    @Test
    void testFormParam() {

        // 配置本地代理服务器,方便监听请求信息
        RestAssured.proxy = host("127.0.0.1").withPort(8888);
        // 允许使用不安全的HTTPS连接,避免SSL握手错误
        RestAssured.useRelaxedHTTPSValidation();

        // 构建并发送POST请求
        given()
                .formParam("username", "hogwarts")  // 添加表单数据
                .log().headers()  // 打印请求头信息
                .log().body()  // 打印请求体信息
                .when()
                .post("https://httpbin.ceshiren.com/post")  // 发送POST请求
                .then()
                .statusCode(200);  // 断言响应状态码为200,表示请求成功
    }
}
  • 调用 formParams() 方法
package ch03_form;

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

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

/**
 * 测试使用多个表单参数发送POST请求。
 */
public class TestFormParams {

    /**
     * 使用多个表单参数发送POST请求并通过HTTPS代理服务器转发请求。
     * <p>
     * 此测试用例将向https://httpbin.ceshiren.com/post发送一个包含多个表单参数的POST请求,
     * 并验证响应状态码是否为200。
     */
    @Test
    void testFormParams() {

        // 配置本地代理服务器,方便监听请求信息
        RestAssured.proxy = host("127.0.0.1").withPort(8888);
        // 允许使用不安全的HTTPS连接,避免SSL握手错误
        RestAssured.useRelaxedHTTPSValidation();

        // 构建并发送POST请求
        given()
                .formParams("username", "hogwarts", "password", "666")  // 添加多个表单数据
                .log().headers()  // 打印请求头信息
                .log().body()  // 打印请求体信息
                .when()
                .post("https://httpbin.ceshiren.com/post")  // 发送POST请求
                .then()
                .statusCode(200);  // 断言响应状态码为200,表示请求成功
    }
}

总结

  • 携带 form 表单格式请求体请求发送