RestAssured接口自动化框架

1.RestAssured简介

RestAssured是一个java接口自动化测试框架,可以发送POST,GET,PUT,DELETE,OPTIONS,PATCH和HEAD请求,并且可以用来验证和校对这些请求的响应信息。从名称上来看,它可以很好的支对restful风格的接口进行测试。

github地址:GitHub - rest-assured/rest-assured: Java DSL for easy testing of REST services

Rest Assured是在HTTP Builder(一个软件项目)基础上开发出的一个工具,这个工具能够采用Java DSL(领域特定语言,例如groovy)进行基于REST风格的服务的测试,使得这种测试变得简单。
Rest Assured 支持POST, GET, PUT, DELETE, HEAD, PATCH and OPTIONS这几种类型的请求和响应的验证。没有TRACE类型。
1)支持JSON数据解析和验证
2)支持XML数据解析和验证
3)支持cookies添加
4)支持Header字段设置
5)支持Content Type设置
6)正文Body的设置
7)支持Cookies的设置
8)Status状态码相关设置
9)authentication认证设置

2.环境搭建

在pom.xml中加入依赖(gson为json格式解析工具)

<dependencies>

        <!-- httpclient -->

        <dependency>

            <groupId>org.apache.httpcomponents</groupId>

            <artifactId>httpclient</artifactId>

            <version>4.5.9</version>

        </dependency>

        <!-- gson -->

        <dependency>

            <groupId>com.google.code.gson</groupId>

            <artifactId>gson</artifactId>

            <version>2.8.5</version>

        </dependency>

        <!-- rest-assured -->

        <dependency>

            <groupId>io.rest-assured</groupId>

            <artifactId>rest-assured</artifactId>

            <version>4.1.1</version>

        </dependency>

        <dependency>

            <groupId>io.rest-assured</groupId>

            <artifactId>json-path</artifactId>

            <version>4.1.1</version>

        </dependency>

    </dependencies>

3.简单例子

新建一个java文件名字:FirstRestAssured

源码:

import io.restassured.RestAssured;

import io.restassured.response.Response;

import io.restassured.specification.RequestSpecification;

import org.testng.annotations.Test;

public class FirstRestAssured {

    @Test

    public void test() {

        //1. 创建一个RestAssured对象

        RestAssured ra = new RestAssured();

        //2. 创建一个请求对象

        RequestSpecification rs = ra.given();

        //3. 发送请求,拿到响应对象

        Response res = rs.get("https://www.baidu.com");

        //4. 判断响应状态码是不是200

        assert res.getStatusCode() == 200;

    }

}

4.语法详解

  • 请求:

基础语法:

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

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

3.then() 解析结果、断言

常用语法:

1.given().header(“Cookies”,“XXXXXXXXXXX”) 请求头

2.given().param("key1","value1") 请求参数

3.given().body(jsonData).contentType(ContentType.JSON) 请求体及请求体格式

4.when().get(“接口地址”) GET请求

5.when().post(“接口地址”) POST请求

6.given().log() 打印信息以便调试

        • 打印所有信息:given().log().all()

        • 打印参数:given().log().params()

        • 打印请求体:given().log().body()

        • 打印header:given().log().headers()

        • 打印cookie:given().log().cookies()

        • 打印请求方式:given().log().method()

        • 打印请求路径:given().log().path()

7.extract().response() 获取返回结果

  • 响应:

响应获取:

Response response = given().XXXXXX.extract().response();

响应解析:

response.getHeaders() 获取响应头

response.getHeader("headerName") 获取单个响应头

response.getBody() 获取响应体

response.getCookies() 获取cookies

response.getCookie("cookieName") 获取单个cookie

response.getContentType() 获取返回格式

response.getStatusCode() 获取状态码

response.getTime() 获取接口请求响应时间

4.常用方法

请求:

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();

响应

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"));

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值