加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 安全 > 正文

如何使用REST Assured实施API测试

发布时间:2021-12-15 06:00:23 所属栏目:安全 来源:互联网
导读:现在API在软件趋势(例如移动应用程序、物联网等)中扮演着越来越重要的角色,对这些 API 进行适当的自动化测试变得不可或缺。有许多不同的工具可以帮助您在API 级别编写这些自动化测试。我将向您展示如何使用流行的开源工具之一来完成此任务:REST Assured
现在API在软件趋势(例如移动应用程序、物联网等)中扮演着越来越重要的角色,对这些 API 进行适当的自动化测试变得不可或缺。有许多不同的工具可以帮助您在API 级别编写这些自动化测试。我将向您展示如何使用流行的开源工具之一来完成此任务:REST Assured。
 
REST Assured 是一个Java库,它提供了一种域特定语言(DSL),用于为 RESTful API编写功能强大、可维护的测试。在以下部分中,我将向您展示如何设置和配置 REST Assured、编写和运行 REST Assured 测试以及应用其一些强大的功能。我将使用真实世界的代码示例,您可以在自己的测试自动化工作中直接复制、运行和重用。
 
入门:配置
要开始使用REST Assured,只需将其作为依赖项添加到您的项目中即可。如果您使用的是Maven,请将以下条目添加到您的 pom.xml(更改版本号以反映您要使用的版本):
 
<dependency>
<groupId>io.rest-assured</groupId>
<artifactId>rest-assured</artifactId>
<version>3.0.2</version>
<scope>test</scope>
</dependency>
 
对于Gradle:
 
testCompile 'io.rest-assured:rest-assured:3.0.2'
 
REST Assured 可以轻松地与现有的单元测试框架(例如 JUnit 和 TestNG)结合使用。对于本教程中提供的示例,我使用了 REST Assured 和 TestNG。
 
设置好 REST Assured 的导入后,将以下静态导入添加到您的测试类:
 
import static io.restassured.RestAssured.*;
import static org.hamcrest.Matchers.*;
 
并且已准备好创建 REST Assured 测试。
 
测试:理解语法
在本教程中,我们将测试Ergast赛车数据库API,可在此处找到。此API提供与一级方程式比赛、车手、赛道等相关的历史数据。
 
为了说明使用 REST Assured 编写测试的方式,这里有一个测试,它以JSON格式检索 2017 年一级方程式赛季的赛道列表,并检查列表中是否有 20 个赛道:
 
@Test
public void test_NumberOfCircuitsFor2017Season_ShouldBe20() {
 
given().
when().
get("http://ergast.com/api/f1/2017/circuits.json").
then().
assertThat().
body("MRData.CircuitTable.Circuits.circuitId",hasSize(20));
}
 
请注意,REST Assured使用的 fluent API支持行为驱动开发(BDD) 中熟悉的 Given/When/Then 语法,从而使测试易于阅读并处理一切(设置、执行和验证)只需一行代码。
 
该hasSize() Hamcrest匹配计数的数量电路,这就是为什么你需要对Hamcrest添加为静态导入。Hamcrest 库包含一组匹配器,允许您创建各种验证,同时保持它们的可读性。
 
测试的验证部分执行以下操作:
 
捕获 API 调用的 (JSON) 响应
 
使用 Groovy GPath 表达式“MRData.CircuitTable.Circuits.circuitId”查询所有名为 circuitId 的元素
 
验证(使用前面提到的 Hamcrest 匹配器)生成的 circuitId 元素集合的大小为 20
 
有Hamcrest匹配器用于大量不同的检查,包括equalTo()平等,每种不超过()和GREATERTHAN()进行比较,hasItem()来检查集合是否包含给定的元素,等等。有关匹配器的完整列表,请参考Hamcrest 库文档。
 
要运行测试,只需使用与您选择的单元测试框架(即 JUnit 或 TestNG)相关联的测试运行器。
其他的REST Assured功能
除了上面介绍的那些之外,REST Assured 还提供了许多其他有用的功能,让您可以创建更强大的测试,例如:
 
能够(反)序列化普通旧 Java 对象 (POJO)。这允许您将与 Java 对象实例关联的属性和值直接序列化为 JSON 或 XML 文档,然后可以使用 POST 方法将其发送到 RESTful API。这也可以反过来工作——API 返回的 JSON 或 XML 响应也可以由 REST Assured 反序列化为 POJO 实例。
 
记录请求和响应。当您需要检查 API 响应以创建适当的检查时,或者当您想确保发送到 API 的请求正确时,这尤其有用。您可以选择记录所有内容(参数、标题和正文)、仅记录标题、仅记录参数等等。
 
REST Assured 带有一个 Spring Mock MVC 模块,允许您使用 REST Assured 语法为 Spring 控制器编写测试。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读