使用REST Assured测验验证REST服务

栏目: 后端 · 前端 · 发布时间: 6年前

内容简介:建立和维护API与其他应用程序非常相似,建立它可能是最容易的部分,但是,当架构完成时,你的工作还没有完成,接下来,需要测试API以确保其按预期运行。使用哪些工具进行测试或一系列测试?即使你没有预先设计API,也可能需要测试API,REST Assured是一个API测试框架。REST Assured是一种特定于Java 领域的语言,它简化了在HTTP Builder之上构建的测试和验证REST服务的过程,REST Assured支持多种请求格式的验证,并且具有非常直观的语法,使其易于学习。

建立和维护API与其他应用程序非常相似,建立它可能是最容易的部分,但是,当架构完成时,你的工作还没有完成,接下来,需要测试API以确保其按预期运行。

使用哪些 工具 进行测试或一系列测试?即使你没有预先设计API,也可能需要测试API,REST Assured是一个API测试框架。

REST Assured是一种特定于 Java 领域的语言,它简化了在HTTP Builder之上构建的测试和验证REST服务的过程,REST Assured支持多种请求格式的验证,并且具有非常直观的语法,使其易于学习。

当公司不断通过RESTful API提供服务时,API测试在开发中变得越来越重要,但是API测试具有挑战性,又必须正确完成,API中几乎没有存在错误的余地,它们会一直处于启动状态,具有合理的响应时间,并有效地处理负载。

想象一下Google Maps API如果发生故障。我们每天使用的许多服务都会受到影响,因为它们的核心功能都需要Google地图,对于Uber,Lyft和Airbnb来说,谷歌地图至关重要。

在下面的示例中,我们将探索REST Assured并确切了解如何在API测试中使用它。

构建

有几种方法可以实现REST Assured设置,这使得在任何项目中都可以轻松使用该框架。

Gradle用户需要添加以下行:

testCompile 'io.rest-assured:rest-assured:3.1.0'

Maven用户,使用:


<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>3.1.0</version>
<scope>test</scope>
</dependency>

请注意,上述方式会包括XmlPath和JsonPath。

在下面的示例中,我们将仅使用JSON,尽管Rest Assured也支持XML。

让我们测试一些API

设置完成后,让我们为Spotify API创建一个Java测试类,但不提供令牌。此请求会因返回401 状态代码而失败,因为Spotify API需要令牌,正如所料,REST Assured将通过使用断言比较预期结果和API实际查询的结果来验证我们的查询。


import io.restassured.RestAssured;
import io.restassured.response.Response;
import org.testng.Assert;


public class RestTest {
static String link = "https://api.spotify.com/v1/artists/1vCWHaC5f2uS3yhpwWbIA6/albums?album_type=SINGLE&offset=20&limit=1";

public static void main(String[] args) {
Response response = RestAssured.get(link);
response.then().assertThat().statusCode(200);
//This fails
response.then().assertThat().statusCode(401);
//This passes
}

}

这里有几点需要注意。首先是语法,很容易理解,因为它更接近自然语言,可能遇到的其他语法糖包括 given, then和 expect。

此时,我们将使用ReqRes执行POST和DELETE请求。ReqRes能模拟具有虚假数据的API,但却是真实的响应,因此,我们不必从头开始构建一个测试应用了;POST将使我们能够创建新资源,并且如名称所示,DELETE将删除资源。


// POST REQUEST

import io.restassured.RestAssured;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import org.testng.Assert;

public class RestTest {
static String json =
"{place: 'earth', message: 'Hello'}";
static String link =
"https://reqres.in/api/users";

public static void main(String[] args) {
RequestSpecification spec = RestAssured.given();
spec.body(json);
Response result = spec.post(link);
result.then().assertThat().statusCode(201);
// Success
System.out.println(result.asString());
// Response body
}

}

现在我们已在服务器上成功创建了一些数据,断言确保数据确实成功写入。请注意,成功POST请求的相应状态代码是201,而不是200。


// DELETE REQUEST

import io.restassured.RestAssured;
import io.restassured.response.Response;
import io.restassured.specification.RequestSpecification;
import java.util.concurrent.TimeUnit;
import org.testng.Assert;


public class RestTest {
static String link =
"https://reqres.in/api/users/10";

public static void main(String[] args) {
RequestSpecification spec = RestAssured.given();
Response done = spec.delete(link);
done.then().assertThat().statusCode(204);
System.out.println(done.getTimeIn(TimeUnit.NANOSECONDS));

}

}

这个删除请求会失败的,因为我们无法删除服务器上的数据; 因此,返回204(无内容)。但是,我们得到请求所需的时间(以纳秒为单位),当你想知道API的执行速度时,这种办法可以派上用场。

这些示例只是可以使用REST Assured执行的一些简单操作,不仅仅限制在JSON,也能为其他格式的API创建更复杂的自动化测试 。


以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网

查看所有标签

猜你喜欢:

本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们

Google御用網頁語言Node.js

Google御用網頁語言Node.js

郭家寶 / 佳魁資訊 / 2013-4-26 / NT 490

這是一本 Node.js 的入門教學,寫給想要學習 Node.js,但沒有任何系統的經驗的開發者。如果你聽說過 Node.js,並被它許多神奇的特性吸引,本書就是為你準備的。 透過閱讀本書,你可以對 Node.js 有全面的認識,學會如何用 Node.js 程式設計,了解事件驅動、非同步式 I/O 的程式設計模式,同時還可以了解一些使用JavaScript 進行函數式程式設計的方法。 ......一起来看看 《Google御用網頁語言Node.js》 这本书的介绍吧!

CSS 压缩/解压工具
CSS 压缩/解压工具

在线压缩/解压 CSS 代码

RGB CMYK 转换工具
RGB CMYK 转换工具

RGB CMYK 互转工具

HEX CMYK 转换工具
HEX CMYK 转换工具

HEX CMYK 互转工具