Java基于Rest Assured自动化测试接口怎么配置

免费教程   2024年05月09日 2:33  

今天小编给大家分享一下Java基于RestAssured自动化测试接口怎么配置的相关知识点,内容详细,逻辑清晰,相信大部分人都还太了解这方面的知识,所以分享这篇文章给大家参考一下,希望大家阅读完这篇文章后有所收获,下面我们一起来了解一下吧。

什么是Rest

Assured 是一个基于 的开源库,主要用于测试 RESTful API。它为编写测试用例提供了一种简单直观的 DSL(领域特定语言),这使得开发人员可以轻松编写和维护自动化测试。 Assured 支持 GET、POST、PUT、DELETE、PATCH 等各种 HTTP 方法,并且可以轻松与流行的测试框架(如 TestNG 和 JUnit)集成。

安装Rest Assured

在maven中引入相关依赖

<dependency><groupId>io.rest-assured</groupId><artifactId>rest-assured</artifactId><version>5.3.0</version><scope>test</scope></dependency>Rest Assured结构

Rest Assured代码的整体结构分为 3 个主要部分:

1.Given

Given是 API 测试的先决条件,可以在其中设置测试所需的一切,例如URL、请求头或参数,或任何需要满足的先决条件。

可以在“Given”中设置的内容:URL、请求头、请求参数和请求正文。

2.When

When是实际向服务器发送 HTTP 请求并获得响应的时间。可以在When中定义请求方法,如 GET、POST、PUT 等。

3.Then

Then是您检查从服务器获得的响应并确保它符合您的预期的地方。在这您可以检查状态代码、响应正文、标头或任何其他对您的测试很重要的内容。

Show Me Code

我们现在通过一个例子来演示下如何使用Rest Assured,首先我们看下postman的例子:

1.请求参数

2.请求头

3.请求体

现在我们用Rest Assured这个框架来测试下上面postman的这个接口。

importio.restassured.builder.RequestSpecBuilder;importio.restassured.response.Response;importio.restassured.specification.RequestSpecification;importorg.testng.annotations.Test;importstaticio.restassured.RestAssured.given;importstaticorg.hamcrest.Matchers.equalTo;importstaticorg.hamcrest.Matchers.lessThan;publicclassTestRestAssured{@TestpublicvoidtestMyApi(){StringjsonBody="{"email":"dhadiprasetyo@gmail.com","uid":"Jzr0sOORprar10kay6CweZ5FNYP2"}";Responseresponse=given().baseUri("http://127.0.0.1:8000").queryParam("version","1.0").header("Authorization","yourauthhere").header("Signature","yoursignaturehere").body(jsonBody).when().post("/getuserdata/").then().assertThat().statusCode(200).header("Content-Type","application/json").header("Cache-Control","max-age=3600").body("name",equalTo("DarmawanHadiprasetyo")).time(lessThan(5000L)).extract().response();}}

1.首先我们在 given() 中设置前置条件

given().baseUri("http://127.0.0.1:8000").queryParam("version","1.0").header("Authorization","yourauthhere").header("Signature","yoursignaturehere").body(jsonBody)

2.然后在when()中定义请求方法,本例中为POST

.when().post("/getuserdata/")

3.然后我们从我们的请求中断言状态代码、标头、正文和响应时间

.then().assertThat().statusCode(200).header("Content-Type","application/json").header("Cache-Control","max-age=3600").body("name",equalTo("DarmawanHadiprasetyo")).time(lessThan(5000L)).extract().response();

如何提取响应体?

例如,这将是我们对之前请求的回应:

{"name":"alvin","role":"SDET"}

以下是我们如何提取这些数据:

JsonPathresponseBody=response.jsonPath();StringfullName=responseBody.getString("name");Stringrole=responseBody.getString("role");统一抽象封装

在大多数情况下,需要测试许多 API,但前提条件相同,例如 BaseURL、参数和请求头等,为了消除代码中的冗余,我们可以统一抽象封装一个 RequestSpecification 类作为我们的规范构建器,并在我们的其他测试中重用它,如下所示:

importio.restassured.builder.RequestSpecBuilder;importio.restassured.path.json.JsonPath;importio.restassured.response.Response;importio.restassured.specification.RequestSpecification;importorg.testng.annotations.Test;importstaticio.restassured.RestAssured.given;importstaticorg.hamcrest.Matchers.equalTo;importstaticorg.hamcrest.Matchers.lessThan;publicclassTestRestAssured{publicstaticRequestSpecificationrequestSpecification(){returnnewRequestSpecBuilder().setBaseUri("http://127.0.0.1:8000").addQueryParam("version","1.0").addHeader("Authorization","yourauthhere").addHeader("Signature","yoursignaturehere").build();}@TestpublicvoidtestMyApi(){StringjsonBody="{"email":"dhadiprasetyo@gmail.com","uid":"Jzr0sOORprar10kay6CweZ5FNYP2"}";Responseresponse=given().spec(requestSpecification()).body(jsonBody).when().post("/getuserdata/").then().assertThat().statusCode(200).header("Content-Type","application/json").header("Cache-Control","max-age=3600").body("name",equalTo("DarmawanHadiprasetyo")).time(lessThan(5000L)).extract().response();JsonPathresponseBody=response.jsonPath();StringfullName=responseBody.getString("name");StringlinkedIn=responseBody.getString("linkedin");Stringrole=responseBody.getString("role");}}

现在,您可以在具有相同前提条件的任何其他需要的测试中重用 requestSpecification() 方法。查看与我们之前代码的区别:

//previousResponseresponse=given().baseUri("http://127.0.0.1:8000").queryParam("version","1.0").header("Authorization","yourauthhere").header("Signature","yoursignaturehere").body(jsonBody).when().post("/getuserdata/")//thenResponseresponse=given().spec(requestSpecification()).body(jsonBody).when().post("/getuserdata/")

通过使用 given().spec(),我们的代码现在变得简单多了。

以上就是“Java基于RestAssured自动化测试接口怎么配置”这篇文章的所有内容,感谢各位的阅读!相信大家阅读完这篇文章都有很大的收获,小编每天都会为大家更新不同的知识,如果还想学习更多的知识,请关注行业资讯频道。

域名注册
购买VPS主机

您或许对下面这些文章有兴趣:                    本月吐槽辛苦排行榜

看贴要回贴有N种理由!看帖不回贴的后果你懂得的!


评论内容 (*必填):
(Ctrl + Enter提交)   

部落快速搜索栏

各类专题梳理

网站导航栏

X
返回顶部