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

  • 27
    点赞
  • 28
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
TestNG 是一种流行的测试框架,它提供了丰富的功能来进行单元测试、集成测试和端到端测试。TestNG 结合 TestAssured 可以进行接口自动化测试,以下是 TestNG TestAssured 接口自动化测试框架的优点: 1. 简单易用:TestNG TestAssured 框架易于学习和使用。TestNG 的注解可以方便地对测试用例进行分组、依赖、优先级等操作,而 TestAssured 提供了直观的 API,可以轻松地完成接口测试。 2. 支持多种验证方式:TestAssured 提供了多种验证方式,如 body、header、cookie、statusCode、responseTime 等,可以全面地验证接口的正确性。 3. 支持数据驱动:TestNG TestAssured 框架可以通过数据驱动的方式进行接口测试,可以通过 Excel、CSV、JSON 等数据源进行参数化测试,提高了测试效率和覆盖率。 4. 支持并发测试:TestNG TestAssured 框架支持并发测试,可以提高测试效率。可以通过 TestNG 的 parallel 属性来设置并发线程数,也可以通过 TestAssuredRestAssured.config() 方法来设置并发连接数。 5. 集成度高:TestNG TestAssured 框架可以与其他测试工具和框架集成,如 Maven、Jenkins、ExtentReports 等,可以方便地进行持续集成和测试报告生成。 总之,TestNG TestAssured 接口自动化测试框架具有易用性高、多种验证方式、数据驱动、并发测试、集成度高等优点,是进行接口自动化测试的不二选择。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值