简介

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

REST-assured基本使用相关推荐

  1. Cucumber+Rest Assured快速搭建api自动化测试平台

    转载:http://www.jianshu.com/p/6249f9a9e9c4 什么是Cucumber?什么是BDD?这里不细讲,不懂的直接查看官方:https://cucumber.io/ 什么是 ...

  2. 用Rest assured作API自动化集成测试

    文章目录 用Rest assured作API自动化集成测试 前言 文档 环境 Rest assured依赖 测试示例 HTTP基础 测试GET方法 打印HTTP response 测试路径参数(Pat ...

  3. 利器 | Java 接口自动化测试首选方案:REST Assured 实践 (一)

    在 REST Assured 的官方 GitHub 上有这样一句简短的描述: Java DSL for easy testing of REST services 简约的 REST 服务测试 Java ...

  4. REST Assured 2 - 用IDEA创建一个基本的REST Assured Maven项目

    REST Assured 系列汇总 之 REST Assured 2 - 用IDEA创建一个基本的REST Assured Maven项目 Maven是一个自动化构建 Java项目的工具,主要用户管理 ...

  5. REST Assured 17 - 设置默认的RequestSpecification

    REST Assured 系列汇总 之 REST Assured 17 - 设置默认的RequestSpecification 我们可以根据需要创建多个Request Specification,Re ...

  6. fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...

    点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...

  7. RFC 2597(assured forwarding PHB Group)

    RFC 2597(保证转发每一跳行为组) PHB:Per-hop Behavior 路由器作用于数据流的行为. PHB的四种标准: 1)类选择码 CS,对应DSCP为XXX000 2)加速转发 EF ...

  8. netty集成ssl完整参考指南(含完整源码)

    虽然我们在内部rpc通信中使用的是基于认证和报文头加密的方式实现安全性,但是有些时候仍然需要使用SSL加密,可能是因为对接的三方系统需要,也可能是由于open的考虑.中午特地测了下netty下集成ss ...

  9. 低声教育_我内心低声说:“成为建设者”

    低声教育 by Rebecca Radding 由丽贝卡·拉丁(Rebecca Radding) 我内心低声说:"成为建设者" (Something within me whisp ...

  10. ux可以去哪些公司_忽略UX会如何伤害您的API以及您可以如何做

    ux可以去哪些公司 by Ifeoluwa Arowosegbe 通过Ifeoluwa Arowosegbe 忽略UX会如何伤害您的API以及您可以如何做 (How ignoring UX hurts ...

最新文章

  1. MultipartFile类常用的一些方法
  2. 湖北生态工程职业技术学院计算机分数线,湖北生态工程职业技术学院录取分数线2021是多少分(附历年录取分数线)...
  3. mysql与sqlserver之间的关系转换
  4. rsync 服务与配置文档
  5. vs2010功能使用体验篇
  6. 数据从hadoop到oracle,如何向 hadoop 导入数据
  7. linux 防火墙 iptables的简单使用
  8. Quartz.NET 入门
  9. iOS开发之项目经验总结
  10. 百旺开票清单导入模板_半年来最爱的高效率工具滴答清单不为人知的使用技巧...
  11. Educational Codeforces Round 91 (Rated for Div. 2) D.Berserk And Fireball(思维,暴力破解,分情况)
  12. 一元二次方程的解的程序
  13. 在vue中如何使用umy-ui
  14. 异常你看这一篇就行了,全程白话很好理解(完结撒花)
  15. 随着窗体大小变化改变控件的大小和字体
  16. 51单片机定时/计数器的工作原理
  17. GIS开发之二维地下管线综合管理系统(Arcgis)第一节 总体介绍
  18. 内容:提出含冰蓄冷空调的微电网多时间尺度优化调度模型,研究冰蓄冷空调 的不同运行方式对优化调度的影响
  19. Java GC(垃圾回收)机制知识总结
  20. 花生壳,内网穿透下的速度测试,花生壳配置和 机制理解

热门文章

  1. Java多线程基础(十三)——Thread-Specific Storage(ThreadLocal)模式
  2. 湖北大学98届计算机网络,我校学子在“H3C”杯全国大学生网络技术大赛中获一等奖...
  3. <数字图像处理>整理--冈萨雷斯版-华中科技大学powerpoint
  4. [UE4][C++]简单超人小游戏(游戏接受键盘事件)
  5. 奥特曼小分队之四(Work Breakdown Structure)
  6. 安卓实现播放器app
  7. JavaEE项目的三层架构
  8. 更有效的编写QQ空间、CSDN、博客园图文并茂的文章
  9. 自建nod32更新服务器,ESET NOD32 官方升级服务器地址
  10. 企业邮箱被反垃圾邮件联盟封了的方法