内容简介:建立和维护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创建更复杂的自动化测试 。
以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持 码农网
本站部分资源来源于网络,本站转载出于传递更多信息之目的,版权归原作者或者来源机构所有,如转载稿涉及版权问题,请联系我们。
Numerical Recipes 3rd Edition
William H. Press、Saul A. Teukolsky、William T. Vetterling、Brian P. Flannery / Cambridge University Press / 2007-9-6 / GBP 64.99
Do you want easy access to the latest methods in scientific computing? This greatly expanded third edition of Numerical Recipes has it, with wider coverage than ever before, many new, expanded and upd......一起来看看 《Numerical Recipes 3rd Edition》 这本书的介绍吧!