rest-assured : Restful API 测试利器 - 真正的黑盒单元测试(跟Spring-Boot更配哦)

这里先贴一下IBM上的介绍

http://www.ibm.com/developerworks/cn/java/j-lo-rest-assured/index.html

Java 程序员常常借助于 JUnit 来测试自己的 REST API,不,应该这样说,Java 程序员常常借助于 JUnit 来测试 REST API 的实现!从某种角度来说,这是一种“白盒测试”,Java 程序员清楚地知道正在测试的是哪个类、哪个方法,而不是从用户的角度出发,测试的是哪个 REST API。

不废话,直接给Spring-Boot项目配置:

import static com.jayway.restassured.RestAssured.given;

import org.apache.logging.log4j.LogManager;
import org.hamcrest.Matcher;
import org.junit.After;
import org.mockito.internal.matchers.Equals;
import org.mockito.internal.matchers.GreaterThan;
import org.mockito.internal.matchers.NotNull;
import org.mockito.internal.matchers.Null;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.beans.factory.annotation.Value;

import com.alibaba.fastjson.JSONArray;
import com.alibaba.fastjson.JSONObject;
import com.jayway.restassured.matcher.ResponseAwareMatcher;
import com.jayway.restassured.response.Response;
import com.jayway.restassured.response.ValidatableResponse;

@RunWith(SpringJUnit4ClassRunner.class)   //1.
@SpringApplicationConfiguration(classes = YourApp.class)   // 2.SpringBoot入口类
@WebIntegrationTest("server.port:0")   // 3: server.port:0 > 指定服务器端口,为0表示随机端口
public class YourControllerTest{

    @Value("${local.server.port}")   //4
    int port;

    @Before
    public void doBefore(){
        RestAssured.port = port;
    }

    @Test
    public void firstTest(){
        JSONObject parm = new JSONObject();
        parm.put("userId", "your id");
        parm.put("name", "your name");
        ValidatableResponse response = given().contentType("application/json")
        .request().body(parm.toJSONString())
        .when().post("/your/restful/api")
        .then()
        .body("return_code", new ResponseAwareMatcher<Response>() {
            @Override
            public Matcher<?> matcher(Response response) throws Exception {
                System.out.println(response.prettyPrint());//获取返回的json数据(1),举例:{"return_code":0,"return_msg":"success"}
                return new Equals(0);
            }
        })
        .body("return_code",new Equals(0));
        ;
        JSONObject json = JSONObject.parseObject(response.extract().asString());//获取返回的json数据(2)
        //自己写一些代码

    }

}

pom.xml引入jar

<dependency>
            <groupId>com.jayway.restassured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>2.3.3</version>
            <scope>test</scope>
        </dependency>

该测试工具跟Spring-Boot简直绝配,跑测试用例时,会启动SpringBoot(你配置的YourApp.java),等启动完成,会跑testcase,最后会关闭服务器。

真正的黑盒+单元测试,让restful API更高质量。

时间: 2024-08-28 14:22:20

rest-assured : Restful API 测试利器 - 真正的黑盒单元测试(跟Spring-Boot更配哦)的相关文章

API测试利器postMan 使用教程

自从开始做API开发之后,我就在寻找合适的API测试工具.一开始不是很想用Chrome扩展,用的 WizTools 的工具,后来试过一次 Postman 之后就停不下来了,还买了付费的Jetpacks.推出Team Sync Beta之后我又把这个工具推广给团队,作为API文档使用.看到中文网络上关于这个工具的文章并不多,于是决定写一篇小文介绍一下. 一.基本功能 Postman的功能在 文档 中有介绍.不过文档略啰嗦,这里简单介绍一下主界面,入门功能就都提到了. Collections:在Po

带你入门带你飞Ⅱ 使用Mocha + Chai + SuperTest测试Restful API in node.js

目录 1. 简介 2. 准备开始 3. Restful API测试实战 Example 1 - GET Example 2 - Post Example 3 - Put Example 4 - Delete 4. Troubleshooting 5. 参考文档 简介 经过上一篇文章的介绍,相信你已经对mocha, chai有一定的了解了, 本篇主要讲述如何用supertest来测试nodejs项目中的Restful API, 项目基于express框架. SuperTest 是 SuperAge

开源API测试工具 Hitchhiker v0.6更新 - 改进压力测试

Hitchhiker 是一款开源的支持多人协作的 Restful Api 测试工具,支持Schedule, 数据对比,压力测试,支持上传脚本定制请求,可以轻松部署到本地,和你的team成员一起协作测试Api. 详细介绍请看: http://doc.hitchhiker-api.com/cn/introduction.html 在线体验: http://www.hitchhiker-api.com/, 可以用 try without login 来免登录使用 (在线演示不支持压力测试和上传js,虚

学习RESTful API

总是见到文章有提到RESTful API的,却不知道是什么东西,找到这篇文章,觉得讲得不错,就转载到这里来吧. 另外也有一篇文章也不错,发个链接:白话REST-识别真假REST ---------------------- 前几日,有一小哥突然问我:陈陈,你会RESTful API吗?我说:不会呀,他说:那我教你好了.然后我就把该小哥拉入"黑名单"了,理由是唱你妹的小星星.然后去深入的学习了一下REST相关的东西. RESTful API对我并不是一个全新的像是突然蹦出来的词汇,我印象

REST API 自动化测试 利器Rest Assured(API接口自动化测试框架体系)

现在,越来越多的 Web 应用转向了 RESTful 的架构,很多产品和应用暴露给用户的往往就是一组 REST API,这样有一个好处,用户可以根据需要,调用不同的 API,整合出自己的应用出来.从这个角度来讲,Web 开发的成本会越来越低,人们不必再维护自己的信息孤岛,而是使用 REST API 互联互通 那么,作为 REST API 的提供者,如何确保 API 的稳定性与正确性呢?全面系统的测试是必不可少的.Java 程序员常常借助于 JUnit 来测试自己的 REST API,不,应该这样

flask开发restful api

在此之前,向大家说明的是,我们整个框架用的是flask + sqlalchemy + redis.如果没有开发过web,还是先去学习一下,这边只是介绍如果从开发web转换到开发移动端.如果flask还不是很熟悉,我建议先到这个网站简单学习一下,非常非常简单.http://dormousehole.readthedocs.org/en/latest/ 一直想写一些特别的东西,能让大家学习讨论的东西.但目前网上的很多博客,老么就按照官方文档照本宣读,要么直接搬代码,什么都不说明.我写这个系列的博客,

[CI] 使用CodeIgniter框架搭建RESTful API服务

在2011年8月的时候,我写了一篇博客<使用CodeIgniter框架搭建RESTful API服务>,介绍了RESTful的设计概念,以及使用CodeIgniter框架实现RESTful API的方法.转眼两年过去了,REST在这两年里有了很大的改进.我对于前一篇博客中的某些方面不是很满意,所以希望能利用这次机会写一个更加完善的版本.我的项目基于Phil Sturgeon的CodeIgniter REST Server,遵循他自己的DBAD协议.Phil的这个项目很棒,干净利落,简单实用,并

3.Spring Boot中使用Swagger2构建强大的RESTful API文档

原文:http://www.jianshu.com/p/8033ef83a8ed 由于Spring Boot能够快速开发.便捷部署等特性,相信有很大一部分Spring Boot的用户会用来构建RESTful API.而我们构建RESTful API的目的通常都是由于多终端的原因,这些终端会共用很多底层业务逻辑,因此我们会抽象出这样一层来同时服务于多个移动端或者Web前端. 这样一来,我们的RESTful API就有可能要面对多个开发人员或多个开发团队:IOS开发.Android开发或是Web开发

使用Node.js + MongoDB 构建restful API

很多天前已经翻译了一大半了,今天收收尾~ RESTful API With Node.js + MongoDB Translated By 林凌灵 翻译目的:练练手,同时了解别人的思维方式 原文地址:RESTful API With Node.js + MongoDB 12 Sep 2013 我是一名移动应用开发者,我需要某种后端服务用来频繁地处理用户数据到数据库中.当然,我可以使用后端即服务类的网站(Parse, Backendless, 等等-),(译者:国内比较出名的有Bmob).但自己解