rest-assured接口測試學(xué)習(xí)(一)

一碧注、rest-assured介紹

rest-assured是github上一個開源項目重付。
地址:https://github.com/rest-assured/rest-assured
作者言:

Testing and validation of REST services in Java is harder than in dynamic languages such as Ruby and Groovy. REST Assured brings the simplicity of using these languages into the Java domain.

優(yōu)點(diǎn):
簡約的接口測試DSL
支持xml json的結(jié)構(gòu)化解析
支持xpath jsonpath gpath等多種解析方式
對spring的支持比較全面

二稠氮、restassured接口測試步驟

  1. IDEA創(chuàng)建maven項目
  2. 添加依賴 restassured junit
  3. 編寫用例
  4. 添加斷言
  5. 調(diào)試

三耘戚、demo演練

在IDEA中新建一個maven項目祷舀,then……

  1. pom.xml文件中添加依賴:
 <dependencies>
        <dependency>
            <groupId>io.rest-assured</groupId>
            <artifactId>rest-assured</artifactId>
            <version>3.3.0</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>junit</groupId>
            <artifactId>junit</artifactId>
            <version>4.12</version>
            <scope>test</scope>
        </dependency>
    </dependencies>
  1. src/test/java下new一個RestDemo.class
    開源wiki中說需要Static imports一下幾個包。即靜態(tài)導(dǎo)入:
import static io.restassured.RestAssured.given;
import static io.restassured.matcher.RestAssuredMatchers.*;
import static org.hamcrest.Matchers.*;
  1. 最簡單的代碼:
public class RestDemo {
    @Test
    public void testGetHtml(){
        given().get("http://www.baidu.com").then().statusCode(200);
    }
}

表示發(fā)送一個get請求码泛,url是http://www.baidu.com渣玲,then()是斷言,statusCode(200)是響應(yīng)狀態(tài)碼等于200弟晚。

  1. 打印log
public class RestDemo {
    @Test
    public void testGetHtml(){
        given().log().all().get("http://www.baidu.com").then().log().all().statusCode(200);
    }

log().all():打印所有l(wèi)og忘衍,可以查看有請求和響應(yīng)的信息


可以使用這樣的格式寫:

//百度搜索Mp3
@Test
    public void testMp3(){
        given()
                .get("http://www.baidu.com/s?wd=mp3")
                .then().log().all().statusCode(200);
    }
  1. restassured最期望的格式:
    @Test
    public void testMp3(){
        given()
                .queryParam("wd","mp3")
        .when()
                .get("http://www.baidu.com/s")
        .then()
                .log().all()
                .statusCode(200);
    }
}

given():一次網(wǎng)絡(luò)請求所需要的條件都寫在這里,頭信息卿城、query參數(shù)
when():觸發(fā)條件
then():斷言

  1. demo演練:
    (1)抓取真實接口枚钓,以xueqiu.com搜索接口為例




    (2)new一個Xueqiu.class文件

public class Xueqiu {
  @Test
  public void testSearch() {
    given()
            .queryParam("code", "sogo")
    .when()
            .get("https://xueqiu.com/stock/search.json")
    .then()
            .log().all()
            .statusCode(200);
  }
}

(3)run一下,提示錯誤:


(4)打印log,查找錯誤:

通過與f12抓的包對比瑟押,發(fā)現(xiàn)Cookie沒有值:

復(fù)制抓到的Cookie值


現(xiàn)在請求可以正常發(fā)送搀捷,也有結(jié)果返回了,根據(jù)結(jié)果修改我們的斷言多望。

(5)調(diào)整斷言:斷言stocks下面的name值為搜狗:
.body("stocks.name",hasItems("搜狗"));

stocks.name根節(jié)點(diǎn).子節(jié)點(diǎn)
.body() 可以無限的寫下去
image.png

當(dāng)實際結(jié)果不符合斷言會怎樣呢嫩舟?
假如我們把斷言改成“sogo”,讓其實際結(jié)果不符合預(yù)期
.body("stocks.code",hasItems("sogo"))

7.demo演練代碼

import org.junit.Test;
import static io.restassured.RestAssured.given;
import static org.hamcrest.Matchers.hasItems;

public class Xueqiu {
  @Test
  public void testSearch() {
    //given開頭表示輸入數(shù)據(jù)
    given().log().all()
            //query請求參數(shù)
            .queryParam("code", "sogo")
            //頭信息
            .header("Cookie","_ga=GA1.2.506579530.1552574503; device_id=0158c91c7ecd8e4d248a54002af6d8ae; aliyungf_tc=AQAAAIatGzFrQgoAJGDMeOsikkxtPFqv; xq_a_token=682c39a460645dafb1ff41f67e0efccba8b0f118; xq_a_token.sig=Bg9acTC-woVSsS6DZvdAtd40CQU; xq_r_token=798a7cab8cd606f61a09fbac15374f1172b00607; xq_r_token.sig=sHSWFNmu_GqEUOK9A-6umfNgFcU; _gid=GA1.2.841306833.1553178554; Hm_lvt_1db88642e346389874251b5a1eded6e3=1552574504,1552736056,1553178554; u=881553178554746; _gat=1; Hm_lpvt_1db88642e346389874251b5a1eded6e3=1553180196")
    //when表示觸發(fā)條件
     .when()
            .get("https://xueqiu.com/stock/search.json")
     //then對結(jié)果斷言
    .then()
            //打印log
            .log().all()
            //斷言狀態(tài)碼
            .statusCode(200)
            //字段斷言
            .body("stocks.name",hasItems("搜狗"))
            .body("stocks.code",hasItems("sogo"));
  }
}
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末怀偷,一起剝皮案震驚了整個濱河市家厌,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌椎工,老刑警劉巖饭于,帶你破解...
    沈念sama閱讀 217,509評論 6 504
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異维蒙,居然都是意外死亡掰吕,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,806評論 3 394
  • 文/潘曉璐 我一進(jìn)店門颅痊,熙熙樓的掌柜王于貴愁眉苦臉地迎上來殖熟,“玉大人,你說我怎么就攤上這事斑响×馐簦” “怎么了燎猛?”我有些...
    開封第一講書人閱讀 163,875評論 0 354
  • 文/不壞的土叔 我叫張陵,是天一觀的道長照皆。 經(jīng)常有香客問我,道長沸停,這世上最難降的妖魔是什么膜毁? 我笑而不...
    開封第一講書人閱讀 58,441評論 1 293
  • 正文 為了忘掉前任,我火速辦了婚禮愤钾,結(jié)果婚禮上瘟滨,老公的妹妹穿的比我還像新娘。我一直安慰自己能颁,他們只是感情好杂瘸,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,488評論 6 392
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著伙菊,像睡著了一般败玉。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上镜硕,一...
    開封第一講書人閱讀 51,365評論 1 302
  • 那天运翼,我揣著相機(jī)與錄音,去河邊找鬼兴枯。 笑死血淌,一個胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的财剖。 我是一名探鬼主播悠夯,決...
    沈念sama閱讀 40,190評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼躺坟!你這毒婦竟也來了沦补?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,062評論 0 276
  • 序言:老撾萬榮一對情侶失蹤咪橙,失蹤者是張志新(化名)和其女友劉穎策彤,沒想到半個月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體匣摘,經(jīng)...
    沈念sama閱讀 45,500評論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡店诗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,706評論 3 335
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了音榜。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片庞瘸。...
    茶點(diǎn)故事閱讀 39,834評論 1 347
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖赠叼,靈堂內(nèi)的尸體忽然破棺而出擦囊,到底是詐尸還是另有隱情违霞,我是刑警寧澤,帶...
    沈念sama閱讀 35,559評論 5 345
  • 正文 年R本政府宣布瞬场,位于F島的核電站买鸽,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏贯被。R本人自食惡果不足惜眼五,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,167評論 3 328
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望彤灶。 院中可真熱鬧看幼,春花似錦、人聲如沸幌陕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,779評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽搏熄。三九已至棚唆,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間心例,已是汗流浹背瑟俭。 一陣腳步聲響...
    開封第一講書人閱讀 32,912評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留契邀,地道東北人摆寄。 一個月前我還...
    沈念sama閱讀 47,958評論 2 370
  • 正文 我出身青樓,卻偏偏與公主長得像坯门,于是被迫代替她去往敵國和親微饥。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,779評論 2 354

推薦閱讀更多精彩內(nèi)容