Rest-Assured新手入門(2)---簡單的示例

前提

上一篇文章介紹了,Rest-Assured的環境搭建,光說不練假把式,對著官方文檔,寫一個簡單的post請求,先入門。
學習的重要資料還是 官方文檔 ,這篇文章重點也是對照官方文檔寫的。

示例

官方示例

先看官方給的一個例子:
假設一個url http://localhost:8080/lotto 返回的JSON如下所示

{
"lotto":{
 "lottoId":5,
 "winning-numbers":[2,45,34,23,7,5,3],
 "winners":[{
   "winnerId":23,
   "numbers":[2,45,34,23,3,5]
 },{
   "winnerId":54,
   "numbers":[52,3,12,11,18,22]
 }]
}
}

如果要驗證這個接口的返回值對不對,一個簡單的例子:

get("/lotto").then().body("lotto.lottoId", equalTo(5));

這個可以驗證返回的lottoID是不是5

上面是一個簡單的get請求,同樣官方也提供了post請求的示例,看完官方的兩個請求之后,再以 雪球 為例,簡單介紹post 請求及其他斷言方式:
假設一個url http://localhost:8080/greetXML 接口返回的內容是XML,如下所示:

<greeting>
   <firstName>{params("firstName")}</firstName>
   <lastName>{params("lastName")}</lastName>
</greeting>

通過rest-assurd可以這樣寫:

given().
         parameters("firstName", "John", "lastName", "Doe").
when().
         post("/greetXML").
then().
         body("greeting.firstName", equalTo("John")).

如果想同時驗證firstname 和 lastname 可以這樣寫:

given().
         parameters("firstName", "John", "lastName", "Doe").
when().
         post("/greetXML").
then().
         body("greeting.firstName", equalTo("John")).
         body("greeting.lastName", equalTo("Doe"));

或者簡單些:

with().parameters("firstName", "John", "lastName","Doe").when().post("/greetXML").then().body("greeting.firstName", equalTo("John"), "greeting.lastName", equalTo("Doe"));

上面是官方的兩個例子,比較簡單,下面以雪球登錄為例,簡單的介紹一下post請求

雪球為例

首先登錄雪球,隨便輸入一個號碼和錯誤的密碼,打開開發者選項,可以看到這個登錄時post請求方式,同時傳了三個參數(記住我這個參數可以為空),即用戶名、密碼

雪球.png

代碼如下:

given().
                header("X-Requested-With" ,"XMLHttpRequest").
                param("username","15211224455").
                param("password","123").
        when().
                post("https://xueqiu.com/snowman/login").
        then().
                log().all().
                body("error_description",equalTo("用戶名或密碼錯誤")).
                body("error_code",equalTo("20082"));

這邊加上了log().all().就是打印所有的信息,類似的可打印cookie、headers、status等等,可以全部打印出來研究下

log.png

這個時候,如果我們運行這個腳本,會發現運行失敗,IDEA給出的報錯:

報錯.png

原因是被劫持掛了代理,只需要加上一句代碼就可以解決:

RestAssured.useRelaxedHTTPSValidation();
其他斷言方式

使用JSON path:

Response response = given().
                header("X-Requested-With", "XMLHttpRequest").
                param("username", "15211224455").
                param("password", "123").
                when().
                post("https://xueqiu.com/snowman/login");

        String res = response.asString();
        JsonPath jp = new JsonPath(res);
        assertEquals("20082",jp.get("error_code"));

解析Json:

ValidatableResponse response = given().
                header("X-Requested-With", "XMLHttpRequest").
                param("username", "15211224455").
                param("password", "123").
                when().
                post("https://xueqiu.com/snowman/login").then();

        response.log().all()
                .body("error_code", equalTo("20082"));

這兩種斷言方式,主要是用于接口返回的JSON格式比較復雜的情況
以上所有,最近幾天所學,小白剛入門,有講的不對的地方,輕拍。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發布,文章內容僅代表作者本人觀點,簡書系信息發布平臺,僅提供信息存儲服務。

推薦閱讀更多精彩內容

  • Spring Cloud為開發人員提供了快速構建分布式系統中一些常見模式的工具(例如配置管理,服務發現,斷路器,智...
    卡卡羅2017閱讀 134,991評論 19 139
  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 173,548評論 25 708
  • 發現 關注 消息 iOS 第三方庫、插件、知名博客總結 作者大灰狼的小綿羊哥哥關注 2017.06.26 09:4...
    肇東周閱讀 12,255評論 4 61
  • 與老公一起休息打掃衛生,看到十年幾年前的一本舊本子,我把它扔掉,老公撿了回來,把其中幾張撕下來,再把筆記本扔掉,我...
    徐愷嶸閱讀 293評論 0 1
  • 深夜像蜷縮在角落的孩子 手捧著著點點星光 頑皮的叫醒我 從迷人的夢里 我找不到夜的影子 只見深藍的天空繁星閃躲 是...
    和尚不念佛閱讀 176評論 0 1