Rest-Assured 是一个测试 Restful Web Service 的 Java 类库,我们能够测试各种各样的请求组合,依次测试核心业务逻辑的不同组合。

它是通过发送特定的rest api,通过服务器返回的HTTP响应,来做功能性测试。

REST API的概念

REST API就是符合REST风格,要了解REST API首先需要弄清楚REST风格的具体含义。REST的全称是Representational State Transfer,中文是表述性状态转移,这个是什么意思等会再解释,先说明为什么会出现REST,以及它对整个网络服务API发展的重要性。

在互联网服务刚刚起步的时候,网页大部分是静态的,用户与服务器之间的交互比较少,但是随着动态网页的发展,操作的种类也越来越繁复,接口冗余且复杂,开发难度大大提升,扩展困难,而且网络traffic的负担也增大了。针对这些问题,2000年一篇论文提出了REST这个设计理念。REST的宗旨是从资源的角度来观察整个网络,分布在各处的资源由URI确定,而客户端的应用通过URI来获取资源的表征。REST与平台、语言等均无关,但是目前仅有HTTP是REST的实现案例。

REST使用URL来定位资源,通过HTTP动作来表述操作,如

GET:http://www.TEST.com/users/user

POST:http://www.TEST.com/users

HTTP动作常用的是PUT、POST、GET和DELETE,分别对应着对资源的更新、插入、获取和删除操作。数据是保存在Headers中传输的,其中PUT还有数据在Body中传输。

REST是无状态的,即前一次的动作对后一次的动作是没有影响的,在HTTP应用中,无状态即不能使用Session。

REST-Assured实例

通过Maven引入:

<dependency>

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

<artifactId>rest-assured</artifactId>

<version>3.0.0</version>

<scope>test</scope>

</dependency>

通过HTTP动作获得请求,在对请求进行断言判断,来完成一系列集成测试。例如:

RestAssured.requestSpecification =

new RequestSpecBuilder().addHeaders(“token”,”xxx”).build();

通过given()设置HTTP动作和附带的参数,例如:

given().contentType("application/json")
.pathParam("organizationId",orgId)
.body(data)
.when().post("/v1/organizations/{organizationId}/users");

传入键值对通常使用map传递,可以通过工具类转换成json等格式,如JSON.toJSONString(map)。

每一次完成后需要RestAssured.reset();来重置状态,避免影响其它的测试用例。

对于返回的response的内容,比如对body中的数据进行验证,可以使用body("id", equalTo(2)),或者使用包装好的Assert方法进行验证。

刚刚学习这方面的知识,内容可能有错误,希望在以后的学习中,逐渐完善自己的知识,并且不断改进。

Rest-Assured 测试框架的更多相关文章

  1. 【转】Java学习---10个测试框架介绍

    [原文]https://www.toutiao.com/i6594302925458113027/ JAVA 程序员需要用到 10 个测试框架和库 Java 程序员需要用到十大单元测试和自动化集成测试 ...

  2. phpunit 测试框架安装

    PHPUnit是一个轻量级的PHP测试框架.它是在PHP5下面对JUnit3系列版本的完整移植,是xUnit测试框架家族的一员(它们都基于模式先锋Kent Beck的设计).来自百度百科 一.下载wg ...

  3. 某互联网后台自动化组合测试框架RF+Sikuli+Python脚本

    某互联网后台自动化组合测试框架RF+Sikuli+Python脚本 http://www.jianshu.com/p/b3e204c8651a 字数949 阅读323 评论1 喜欢0 一.**Robo ...

  4. selenium测试框架使用xml作为对象库

    之前已经写过一篇: selenium测试框架篇,页面对象和元素对象的管理 上次使用的excel作为Locator对象管理,由于excel处理不够方便,有以下缺点: 不能实现分page 加载Locato ...

  5. selenium 测试框架中使用grid

    之前的测试框架:http://www.cnblogs.com/tobecrazy/p/4553444.html 配合Jenkins可持续集成:http://www.cnblogs.com/tobecr ...

  6. selenium测试框架篇,页面对象和元素对象的管理

    前期已经做好使用Jenkins做buildhttp://www.cnblogs.com/tobecrazy/p/4529399.html 做自动化框架,不可避免的就是对象库. 有一个好的对象库,可以让 ...

  7. Junit测试框架 Tips

    关于Junit测试框架使用的几点总结: 1.Junit中的测试注解: @Test →每个测试方法前都需要添加该注解,这样才能使你的测试方法交给Junit去执行. @Before →在每个测试方法执行前 ...

  8. Python几种常用的测试框架

    一.测试的常用规则 一个测试单元必须关注一个很小的功能函数,证明它是正确的: 每个测试单元必须是完全独立的,必须能单独运行.这样意味着每一个测试方法必须重新加载数据,执行完毕后做一些清理工作.通常通过 ...

  9. 测试框架Mocha与断言expect

    测试框架Mocha与断言expect在浏览器和Node环境都可以使用除了Mocha以外,类似的测试框架还有Jasmine.Karma.Tape等,也很值得学习. 整个项目源代码: 为什么学习测试代码? ...

  10. 在测试框架中使用Log4J 2

    之前的测试框架:http://www.cnblogs.com/tobecrazy/p/4553444.html 配合Jenkins可持续集成:http://www.cnblogs.com/tobecr ...

随机推荐

  1. SwaggerUI用户手册

    SwaggerUI是一个非常好用的API文档工具,最关键的是他还能在工具内调试API,简直爽的不要不要的~网上针对开发者的文档非常多,但是给用户的手册却非常少.所以我来简单写个用户手册,供没有使用过s ...

  2. 算法-求两个有序数组两两相加的值最小的K个数

    我的思路是: 用队列,  从(0,0)開始入队,每次出队的时候,选(1,0) (0,1) 之间最小的入队,假设是相等的都入队,假设入过队的就不入了,把出队的k个不同的输出来就可以 我測试了几组数据都是 ...

  3. 获取某商家当前每个月销量sql语句。

    用两个mysql函数 FROM_UNIXTIME( ordertime )将日期格式转换成时间戳 month( FROM_UNIXTIME( ordertime ) ) 获取当前日期的月 select ...

  4. 【.net开发者自学java系列】使用Eclipse开发SpringMVC(2)

    大概熟悉了 Eclipse. 然后先上Spring MVC 官网看看. 可是英文太差?翻译咯.现在翻译可屌了,真高兴生活在现在科技发达的时代.活着在中国太美好了. 没出过国门就能看懂英文.我都崇拜自己 ...

  5. [USACO15DEC]最大流Max Flow(树链剖分,线段树)

    FJ给他的牛棚的N(2≤N≤50,000)个隔间之间安装了N-1根管道,隔间编号从1到N.所有隔间都被管道连通了. FJ有K(1≤K≤100,000)条运输牛奶的路线,第i条路线从隔间si运输到隔间t ...

  6. solr 服务器搭建(Linux版)

    1.下载访问linux工具  securcrt   链接:https://pan.baidu.com/s/1zTwzmnzUmnwbKUCNHCLN1g 密码:kpyg 2.下载所需的 jdk  so ...

  7. Js错误: obj.parents is not a function

    代码:      (1)  <div class="ViewMore" id="viewmore${i}" onclick="CLICK(thi ...

  8. [Doctrine Migrations] 数据库迁移组件的深入解析四:集成diff方式迁移组件

    场景及优势 熟悉Symfony框架之后,深刻感受到框架集成的ORM组件Doctrine2的强大之处,其中附带的数据迁移也十分方便.Doctrine2是使用Doctrine DBAL组件把代码里面的表结 ...

  9. kubernetes常用基础命令

    创建资源对象 创建名为nginx-deploy的控制器资源对象 [root@master ~]# kubectl run nginx-deploy --image=nginx:1.12 --repli ...

  10. wav2midi 音乐旋律提取算法 附可执行demo

    前面提及过,音频指纹算法的思路. 也梳理开源了两个比较经典的算法. https://github.com/cpuimage/shazam https://github.com/cpuimage/Aud ...