亚洲精品久久久中文字幕-亚洲精品久久片久久-亚洲精品久久青草-亚洲精品久久婷婷爱久久婷婷-亚洲精品久久午夜香蕉

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

Java基于rest assured實(shí)現(xiàn)接口測(cè)試過程解析

瀏覽:47日期:2022-09-04 14:36:44

背景

java程序員一般寫的是后端服務(wù)是JavaWeb類型的項(xiàng)目,主要包括Http接口和dubbo接口,Http接口一般采用的rest風(fēng)格,那么如何快速的對(duì)rest接口在第三方的測(cè)試框架上進(jìn)行測(cè)試呢?

rest-assured框架是一個(gè)不錯(cuò)的工具。

使用之前,需要熟悉一下最基礎(chǔ)的使用方法,在寫完幾個(gè)接口的測(cè)試用例之后,好比你可以使用你的三棱軍刺熟練的進(jìn)行基礎(chǔ)的攻擊了。

快速的來(lái)一個(gè)hello world吧!

假設(shè)你寫了一個(gè)接口:lotto,訪問路徑是: http://localhost:8080/lotto

接口返回值是:

{'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] }]}}

如何快速的驗(yàn)證接口是否返回正常值呢?

get('/lotto').then().body('lotto.winners.winnerId', hasItems(23, 54));

使用簡(jiǎn)單吧!

引入

不多說(shuō),直接maven的方式引入:注意,我直接按照默認(rèn)的scope引入的,不是test;

主要引入以下2個(gè)依賴,原因如下:

rest-assured: 主要測(cè)試基本的http的rest風(fēng)格接口,這個(gè)是最基礎(chǔ)的依賴;

json-path: 主流的接口主要返回json,對(duì)接口進(jìn)行測(cè)試用例測(cè)試,主要也是判斷json返回某路徑下的數(shù)據(jù);

<dependency> <groupId>io.rest-assured</groupId> <artifactId>rest-assured</artifactId> <version>4.2.0</version></dependency><dependency> <groupId>io.rest-assured</groupId> <artifactId>json-path</artifactId> <version>4.2.0</version></dependency>

然后你就可以愉快的編寫測(cè)試用例,然后使用rest-assured進(jìn)行接口測(cè)試了。

使用要點(diǎn)

先上簡(jiǎn)單代碼吧!

先準(zhǔn)備測(cè)試數(shù)據(jù):

final TestCaseDataModel<LoginRestReq> testCaseDataModel = new TestCaseDataModel<>(); final LoginRestReq loginRestReq = LoginRestReq.builder().appId('2a6bf452219cfe44c7f78231e3c80a13072b6727').nonce('123456').timestamp(System.currentTimeMillis()).userId('lxlifuchun').userName('李福春').build(); String appSecret = '91e47f584dae551170ade272b2c7a69f'; loginRestReq.setChecksum(SignUtils.generateCheckSum(loginRestReq.getAppId(), appSecret, loginRestReq.getTimestamp(), loginRestReq.getNonce())); testCaseDataModel.setInputParam(loginRestReq); ExpectModel expectModel = new ExpectModel(); expectModel.setPath('data.id'); expectModel.setMatcher(Matchers.lessThan(0)); testCaseDataModel.setExpectResult(Arrays.asList(expectModel));

RestAssured.baseURI = 'https://rest-beta.xxx.com'; final ValidatableResponse validatableResponse = given().contentType(ContentType.JSON).header('requestId', UUID.randomUUID().toString()).body(testCaseData.getInputParam()). post('/user_service/user/login').then().contentType(ContentType.JSON); for (Object obj : testCaseData.getExpectResult()) { ExpectModel item = (ExpectModel) obj; validatableResponse.body(item.getPath(), item.getMatcher()); }

做的事情很簡(jiǎn)單,就是拿一個(gè)登錄接口來(lái)實(shí)際的試一下:

login接口接受一個(gè)json的參數(shù),LoginRestReq對(duì)下轉(zhuǎn)換之后得到;然后返回?cái)?shù)據(jù),數(shù)據(jù)中有一個(gè)用戶id,路徑是 data.id,如果id大于0,標(biāo)識(shí)登錄操作成功,登錄接口正常。

很好的完成了接口的測(cè)試,如果失敗,會(huì)拋出錯(cuò)誤,捕獲錯(cuò)誤,然后輸出信息,標(biāo)識(shí)測(cè)試用例不通過,提示到界面或者發(fā)送郵件給到開發(fā)人員,即完成了接口的自動(dòng)化測(cè)試。

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 亚洲午夜精品久久久久久成年 | 在线观看国产欧美 | 黄色xxxxxx| 久久中文字幕亚洲 | 亚州一级 | 国产精品福利在线观看 | 婷婷亚洲综合一区二区 | 国产精选91热在线观看 | 狼人久草 | yy6080韩国日本三理论 | 综合色区 | 日本中文字幕一区二区 | 亚洲国产精品免费 | 久久久久久一级毛片免费野外 | 久久中文精品 | 黄色毛片小视频 | 久草久操 | 成人高清毛片a | 成人午夜网址 | 韩国精品一区二区三区四区五区 | a一级日本特黄aaa大片 | 一级做a爰片性色毛片刺激 一级做a爰片性色毛片视频图片 | 国产大学生真实在线播放 | 永久网站色视频在线观看免费 | 国产精品视频成人 | 模特尤妮丝凹凸福利视频 | 久久久不卡国产精品一区二区 | 国内精品不卡一区二区三区 | 碰碰97| 日韩高清网站 | 亚洲伦理一区二区三区 | 亚洲精品国产电影午夜 | 国产老妇人 | 香蕉免费 | 日韩中文字幕视频在线 | 尹人香蕉久久99天天拍欧美p7 | 日韩性生活大片 | 欧美激情视频一级视频一级毛片 | 亚洲一区欧美二区 | 伊人久久视频 | 国产成人免费永久播放视频平台 |