当前位置: 首页 > 工具软件 > REST-assured > 使用案例 >

REST-assured基本使用

别锐
2023-12-01

简介

REST-assured是Github上一个开源项目,是一套由 Java 实现的 REST API 测试框架 它的语法非常简洁,是一种专为测试 REST API 而设计的 DSL(DSL 领域专用语言 GPL 通用编程语言)。

基本使用

1. Maven的pom.xml添加 REST-Assured 依赖坐标

<dependency>
      <groupId>io.rest-assured</groupId>
      <artifactId>rest-assured</artifactId>
      <version>4.2.0</version>
      <scope>test</scope>
</dependency>

2. 创建 Java Class,静态导入 REST-Assured 类路径

import static io.restassured.RestAssured.*;

3. 语法格式

given().
   XXXX
when().
   XXXX
then().
   XXXX

类似于行为驱动开发(Behaviour Driven Development-BDD)中的定义的结构 Given-When-Then,Given: 在某场景下,When:发生什么事件,Then:产生了什么结果。而 REST-Assured 借鉴了这一套描述可以使得语法更加简洁:

given 设置测试预设(包括请求头、请求参数、请求体、cookies 等等)

when 所要执行的操作(GET/POST 请求)

then 解析结果、断言


get请求

1. 直接在URL地址后面拼接参数

given().
when().
    get("http://httpbin.org/get?phone=13323234545&password=123456").
then().
    log().body();

2. 通过queryParam方法添加参数

given().
    queryParam("mobilephone","13323234545").
    queryParam("password","123456").
when().
    get("http://httpbin.org/get").
then().
    log().body();

post请求

1. 表单参数类型

given().
    formParam("mobilephone","13323234545").
    formParam("password","123456").
when().
    post("http://httpbin.org/post").
then().
    log().body();

2. json参数类型

String jsonData = "{\"mobilephone\":\"13323234545\",\"password\":\"234545\"}";
given().
    body(jsonData).contentType(ContentType.JSON).
when().
    post("http://httpbin.org/post").
then().
    log().body();

3. xml参数类型

String xmlStr = "<?xml version=\"1.0\" encoding=\"utf-8\"?>\n" +
                "<suite>\n" +
                "   <class>测试xml</class>\n" +
                "</suite>";
given().
    contentType(ContentType.XML).
    body(xmlStr).
when().
    post("http://www.httpbin.org/post").
then().
    log().body();

4. 上传文件

我们传送大容量的数据到服务端时,我们通常使用 multipart 表单数据技术。rest-assured提供了一个叫做 multiPart 的方法可以让我们指定文件(file)、字节数组(byte-array)、输入流或者是上传文件

given().
    multiPart(new File("D:\\match.png")).
when().
    post("http://httpbin.org/post").
then().
    log().body();

Json序列化

需要导入jackson的依赖

<dependency>
    <groupId>com.fasterxml.jackson.core</groupId>
    <artifactId>jackson-databind</artifactId>
    <version>2.11.3</version>
</dependency>

有时候我们的数据并不是原始的json数据,而是保存在Map中,REST-assured可以直接将Map转json

//HashMap转JSON
HashMap<String,String> hashMap = new HashMap<String, String>();
hashMap.put("name","张三");
hashMap.put("age","20");
given().
    contentType(ContentType.JSON).
    body(hashMap).
when().
    post("http://www.httpbin.org/post").
then().
    log().body();

获取响应

extract().response() 有时我们需要获取响应头中的一些信息,比如Token 也可以通过Gpath解析响应体某个值

Response res=
given().
    contentType(ContentType.JSON).
    body(jsonData).
when().
    post("http://httpbin.org/post").
then().
    extract().response();
//获取接口请求响应时间
System.out.println(res.time());
//获取响应头信息
System.out.println(res.getHeader("token"));
//获取响应体信息
System.out.println(res.path("lotto.lottoId"));

 

 类似资料: