REST-assured基本使用
简介
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基本使用相关推荐
- Cucumber+Rest Assured快速搭建api自动化测试平台
转载:http://www.jianshu.com/p/6249f9a9e9c4 什么是Cucumber?什么是BDD?这里不细讲,不懂的直接查看官方:https://cucumber.io/ 什么是 ...
- 用Rest assured作API自动化集成测试
文章目录 用Rest assured作API自动化集成测试 前言 文档 环境 Rest assured依赖 测试示例 HTTP基础 测试GET方法 打印HTTP response 测试路径参数(Pat ...
- 利器 | Java 接口自动化测试首选方案:REST Assured 实践 (一)
在 REST Assured 的官方 GitHub 上有这样一句简短的描述: Java DSL for easy testing of REST services 简约的 REST 服务测试 Java ...
- REST Assured 2 - 用IDEA创建一个基本的REST Assured Maven项目
REST Assured 系列汇总 之 REST Assured 2 - 用IDEA创建一个基本的REST Assured Maven项目 Maven是一个自动化构建 Java项目的工具,主要用户管理 ...
- REST Assured 17 - 设置默认的RequestSpecification
REST Assured 系列汇总 之 REST Assured 17 - 设置默认的RequestSpecification 我们可以根据需要创建多个Request Specification,Re ...
- fileinputstream自定义类序列化和反序列化_Rest Assured篇:Java中的序列化和反序列化...
点击上方蓝字设为星标 每天傍晚伴你一起成长! Java 中的序列化和反序列化是一个重要的编程概念.它适用于所有主要的编程语言.在本章中,我们将尝试在Java语言的上下文中理解此概念.在本章的最后,我们 ...
- RFC 2597(assured forwarding PHB Group)
RFC 2597(保证转发每一跳行为组) PHB:Per-hop Behavior 路由器作用于数据流的行为. PHB的四种标准: 1)类选择码 CS,对应DSCP为XXX000 2)加速转发 EF ...
- netty集成ssl完整参考指南(含完整源码)
虽然我们在内部rpc通信中使用的是基于认证和报文头加密的方式实现安全性,但是有些时候仍然需要使用SSL加密,可能是因为对接的三方系统需要,也可能是由于open的考虑.中午特地测了下netty下集成ss ...
- 低声教育_我内心低声说:“成为建设者”
低声教育 by Rebecca Radding 由丽贝卡·拉丁(Rebecca Radding) 我内心低声说:"成为建设者" (Something within me whisp ...
- ux可以去哪些公司_忽略UX会如何伤害您的API以及您可以如何做
ux可以去哪些公司 by Ifeoluwa Arowosegbe 通过Ifeoluwa Arowosegbe 忽略UX会如何伤害您的API以及您可以如何做 (How ignoring UX hurts ...
最新文章
- MultipartFile类常用的一些方法
- 湖北生态工程职业技术学院计算机分数线,湖北生态工程职业技术学院录取分数线2021是多少分(附历年录取分数线)...
- mysql与sqlserver之间的关系转换
- rsync 服务与配置文档
- vs2010功能使用体验篇
- 数据从hadoop到oracle,如何向 hadoop 导入数据
- linux 防火墙 iptables的简单使用
- Quartz.NET 入门
- iOS开发之项目经验总结
- 百旺开票清单导入模板_半年来最爱的高效率工具滴答清单不为人知的使用技巧...
- Educational Codeforces Round 91 (Rated for Div. 2) D.Berserk And Fireball(思维,暴力破解,分情况)
- 一元二次方程的解的程序
- 在vue中如何使用umy-ui
- 异常你看这一篇就行了,全程白话很好理解(完结撒花)
- 随着窗体大小变化改变控件的大小和字体
- 51单片机定时/计数器的工作原理
- GIS开发之二维地下管线综合管理系统(Arcgis)第一节 总体介绍
- 内容:提出含冰蓄冷空调的微电网多时间尺度优化调度模型,研究冰蓄冷空调 的不同运行方式对优化调度的影响
- Java GC(垃圾回收)机制知识总结
- 花生壳,内网穿透下的速度测试,花生壳配置和 机制理解
热门文章
- Java多线程基础(十三)——Thread-Specific Storage(ThreadLocal)模式
- 湖北大学98届计算机网络,我校学子在“H3C”杯全国大学生网络技术大赛中获一等奖...
- <数字图像处理>整理--冈萨雷斯版-华中科技大学powerpoint
- [UE4][C++]简单超人小游戏(游戏接受键盘事件)
- 奥特曼小分队之四(Work Breakdown Structure)
- 安卓实现播放器app
- JavaEE项目的三层架构
- 更有效的编写QQ空间、CSDN、博客园图文并茂的文章
- 自建nod32更新服务器,ESET NOD32 官方升级服务器地址
- 企业邮箱被反垃圾邮件联盟封了的方法