天天看點

接口測試 rest-assured 使用指南

注意,如果您正在使用 1.9.0 或者更早的版本請參考舊文檔。

REST Assured 是一個可以簡化 HTTP Builder 頂層 基于 REST 服務的測試過程的 Java DSL(針對某一領域,具有受限表達性的一種計算機程式設計語言)。它支援發起 POST,GET,PUT,DELETE,OPTIONS,PATCH 和 HEAD 請求,并且可以用來驗證和校對這些請求的響應資訊。

靜态導入方法

示例

JSON 示例

JSON Schema Validation

XML 示例

進階用法

XML

JSON

其它示例

關于 float 和 double

文法關注點 (文法糖)

獲得響應體資訊

從已驗證的響應體中提取值

JSON (使用 JsonPath)

XML (使用 XmlPath)

擷取某個路徑下的值

Headers, cookies, status 等

擷取全部 header 值

擷取全部 cookie 值

擷取詳細的 cookie 值

獲得響應資訊

在驗證響應之後提取特定的值

單獨使用路徑

擷取 header

擷取 cookie

指定請求資料

請求 HTTP 資源

參數化

多值參數

參數不指派

路徑參數

Cookie

Header

Content-Type

請求正文

驗證響應資訊

響應體

狀态碼

内容全比對

關聯類型驗證

計算響應時間

認證

基本認證

搶占式的基本認證

受質詢的基本認證

摘要認證

表單認證

CSRF

OAuth

OAuth1

OAuth2

Multi-part 類型的表單資料

對象映射

序列化

基于 Content-Type 的序列化

由 HashMap 建立 JSON

使用顯式序列化器

反序列化

基于 Content-Type 的反序列化

自定義 content-type 的反序列化

使用顯式反序列化器

配置

自定義

解析器

自定義解析器

預設解析器

預設值

模式複用

過濾器

Response Builder

日志

請求日志

響應日志

認證失敗日志

根路徑

Session 支援

Session 過濾器

SSL

SSL 無效的主機名

URL 編碼

代理(proxy)配置

靜态代理配置

請求規範代理配置

詳細配置

編碼配置

解碼配置

Session 配置

重定向(Redirect)DSL

網絡連接配接配置

JSON 配置

HTTP 用戶端配置

SSL 配置

參數配置

Spring Mock Mvc 模型

Bootstrapping RestAssuredMockMvc

異步請求

添加 Request Post Processors

添加 Result Handlers

使用 Result 比對器

攔截器

Specifications

重置 RestAssuredMockMvc

Spring MVC 身份認證

使用 Spring Security 測試

注入一個使用者

參數相關

Scala 支援

Kotlin 支援

更多

推薦大家從以下的類中靜态導入方法,以提高使用 rest-assured 的效率。

如果您想使用Json Schema validation 還應該靜态導入這些方法:

更多使用方法參閱 Json Schema Validation 。

如果您正在使用 SpringMVC,你可以使用spring-mock-mvc 模型的 Rest Assured DSL 來對 Spring 的 controller 層進行單元測試。為此需要從RestAssuredMockMvc靜态導入這些方法,而不是io.restassured.RestAssured:

假設某個 get 請求 (to http://localhost:8080/lotto) 傳回 JSON 如下:

REST assured 可以幫您輕松地進行 get 請求并對響應資訊進行處理。舉個例子,如果想要判斷 lottoId 的值是否等于 5,你可以這樣做:

又或許您想要檢查 winnerId 的取值包括23 和 54:

注意: equalTo 和 hasItems 是 Hamcrest matchers 的方法,是以需要靜态導入 org.hamcrest.Matchers。

注意這裡的"json path"文法使用的是Groovy 的 GPath标注法,不要和 Jayway 的JsonPath文法混淆。

(譯者注:Java 在 java.math 包中提供的 API 類 BigDecimal,用來對超過 16 位有效位的數進行精确的運算)

您可以對 rest-assured 和 JsonPath 進行配置,使之以 BigDecimal 傳回 json 裡的數值類型資料,而不是 float 或者 double。可以參考下面 json 文本:

預設情況下您驗證 price 字段是否等于 float 類型的 12.12 像這樣:

但是如果想用 rest-assured 的 JsonConfig 來配置傳回的所有的 json 數值都為 BigDecimal 類型:

自從 2.1.0 版本 rest-assured 開始支援Json Schema validation. 舉個例子,在 classpath 中放置以下的 schema 檔案(譯者注:idea 的話可以放在 resources 目錄下),products-schema.json: