您好,登錄后才能下訂單哦!
今天小編給大家分享一下Java基于Rest Assured自動化測試接口怎么配置的相關知識點,內(nèi)容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
Rest Assured
是一個基于 Java 的開源庫,主要用于測試 RESTful API
。它為編寫測試用例提供了一種簡單直觀的 DSL(領域特定語言),這使得開發(fā)人員可以輕松編寫和維護自動化測試。Rest Assured
支持 GET
、POST
、PUT
、DELETE
、PATCH
等各種 HTTP 方法,并且可以輕松與流行的測試框架(如 TestNG
和 JUnit
)集成。
在maven中引入相關依賴
<dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>5.3.0</version> <scope>test</scope> </dependency>
Rest Assured
代碼的整體結構分為 3 個主要部分:
1.Given
Given
是 API 測試的先決條件,可以在其中設置測試所需的一切,例如URL、請求頭或參數(shù),或任何需要滿足的先決條件。
可以在“Given
”中設置的內(nèi)容:URL、請求頭、請求參數(shù)和請求正文。
2.When
When
是實際向服務器發(fā)送 HTTP 請求并獲得響應的時間??梢栽?code>When中定義請求方法,如 GET
、POST
、PUT
等。
3.Then
Then
是您檢查從服務器獲得的響應并確保它符合您的預期的地方。在這您可以檢查狀態(tài)代碼、響應正文、標頭或任何其他對您的測試很重要的內(nèi)容。
我們現(xiàn)在通過一個例子來演示下如何使用Rest Assured
,首先我們看下postman
的例子:
1.請求參數(shù)
2.請求頭
3.請求體
現(xiàn)在我們用Rest Assured
這個框架來測試下上面postman的這個接口。
import io.restassured.builder.RequestSpecBuilder; import io.restassured.response.Response; import io.restassured.specification.RequestSpecification; import org.testng.annotations.Test; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.lessThan; public class TestRestAssured { @Test public void testMyApi() { String jsonBody = "{"email":"dhadiprasetyo@gmail.com","uid":"Jzr0sOORprar10kay6CweZ5FNYP2"}"; Response response = 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("Darmawan Hadiprasetyo")) .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.然后我們從我們的請求中斷言狀態(tài)代碼、標頭、正文和響應時間
.then().assertThat().statusCode(200) .header("Content-Type", "application/json") .header("Cache-Control", "max-age=3600") .body("name", equalTo("Darmawan Hadiprasetyo")) .time(lessThan(5000L)) .extract().response();
如何提取響應體?
例如,這將是我們對之前請求的回應:
{ "name": "alvin", "role": "SDET" }
以下是我們?nèi)绾翁崛∵@些數(shù)據(jù):
JsonPath responseBody = response.jsonPath(); String fullName = responseBody.getString("name"); String role = responseBody.getString("role");
在大多數(shù)情況下,需要測試許多 API,但前提條件相同,例如 BaseURL、參數(shù)和請求頭等,為了消除代碼中的冗余,我們可以統(tǒng)一抽象封裝一個 RequestSpecification
類作為我們的規(guī)范構建器,并在我們的其他測試中重用它,如下所示:
import io.restassured.builder.RequestSpecBuilder; import io.restassured.path.json.JsonPath; import io.restassured.response.Response; import io.restassured.specification.RequestSpecification; import org.testng.annotations.Test; import static io.restassured.RestAssured.given; import static org.hamcrest.Matchers.equalTo; import static org.hamcrest.Matchers.lessThan; public class TestRestAssured { public static RequestSpecification requestSpecification() { return new RequestSpecBuilder().setBaseUri("http://127.0.0.1:8000") .addQueryParam("version", "1.0") .addHeader("Authorization", "yourauthhere") .addHeader("Signature", "yoursignaturehere") .build(); } @Test public void testMyApi() { String jsonBody = "{"email":"dhadiprasetyo@gmail.com","uid":"Jzr0sOORprar10kay6CweZ5FNYP2"}"; Response response = 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("Darmawan Hadiprasetyo")) .time(lessThan(5000L)) .extract().response(); JsonPath responseBody = response.jsonPath(); String fullName = responseBody.getString("name"); String linkedIn = responseBody.getString("linkedin"); String role = responseBody.getString("role"); } }
現(xiàn)在,您可以在具有相同前提條件的任何其他需要的測試中重用 requestSpecification()
方法。查看與我們之前代碼的區(qū)別:
// previous Response response = given().baseUri("http://127.0.0.1:8000") .queryParam("version", "1.0") .header("Authorization", "yourauthhere") .header("Signature", "yoursignaturehere") .body(jsonBody) .when().post("/getuserdata/") // then Response response = given().spec(requestSpecification()) .body(jsonBody) .when().post("/getuserdata/")
通過使用 given().spec()
,我們的代碼現(xiàn)在變得簡單多了。
以上就是“Java基于Rest Assured自動化測試接口怎么配置”這篇文章的所有內(nèi)容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權內(nèi)容。