日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當(dāng)前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

如何确保API 的稳定性与正确性?你只需要这一招

發(fā)布時(shí)間:2024/3/24 编程问答 37 豆豆
生活随笔 收集整理的這篇文章主要介紹了 如何确保API 的稳定性与正确性?你只需要这一招 小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,幫大家做個(gè)參考.

一、什么是rest-assured
現(xiàn)在,越來越多的 Web 應(yīng)用轉(zhuǎn)向了RESTful的架構(gòu),很多產(chǎn)品和應(yīng)用暴露給用戶的往往就是一組 REST API,這 樣有一個(gè)好處,用戶可以根據(jù)需要,調(diào)用不同的 API,整合出自己的應(yīng)用出來。從這個(gè)角度來講,Web 開發(fā)的成本會(huì)越來越低,人們不必再維護(hù)自己的信息孤島,而是使用 REST API 這種組合模式。

那么,作為 REST API 的提供者,如何確保 API 的穩(wěn)定性與正確性呢?全面系統(tǒng)的測(cè)試是必不可少的。Java 程 序員常常借助于 JUnit 來測(cè)試自己的 REST API,不,應(yīng)該這樣說,Java 程序員常常借助于JUnit 來測(cè)試 REST API的實(shí)現(xiàn)!從某種角度來說,這是一種“白盒測(cè)試”,Java 程序員清楚地知道正在測(cè)試的是哪個(gè)類、哪個(gè)方 法,而不是從用戶的角度出發(fā),測(cè)試的是哪個(gè)REST API。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-MlRvq2n9-1650787676909)(https://ceshiren.com/uploads/default/original/3X/c/0/c0f2baadfa15e0549eee87abdce4560ff4b995d6.jpeg)]

Rest-Assured 是一套由 Java 實(shí)現(xiàn)的 REST API測(cè)試框架,它是一個(gè)輕量級(jí)的REST API 客戶端,可以直接編寫代碼向服務(wù)器端發(fā)起 HTTP請(qǐng)求,并驗(yàn)證返回結(jié)果;它的語法非常簡(jiǎn)潔,是一種專為測(cè)試 REST API 而設(shè)計(jì)的 DSL。使用 Rest-Assured 測(cè)試 REST API,就和真正的用戶使用 REST API 一樣,只不過 Rest-Assured 讓這一切變得自動(dòng)化了。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-0CDiMatI-1650787677601)(https://ceshiren.com/uploads/default/original/3X/d/9/d96ab7b08ba1e34b27d14e766df78ea4e0fdc5d8.jpeg)]

二、模擬get請(qǐng)求
雪球網(wǎng)是一個(gè)股票投資網(wǎng)站,你可以使用網(wǎng)站的搜索功能來查詢股票信息,比如我們想查詢sougou的信息,下 面利用了charles分析工具來查看請(qǐng)求和回答:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-iAVu12A7-1650787678192)(https://ceshiren.com/uploads/default/original/3X/8/6/86bf76ba843c63c133b985178b5019b1e37066f5.gif)]

這是一個(gè)Get請(qǐng)求,返回的內(nèi)容格式如下:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-rVSysrrS-1650787678613)(https://ceshiren.com/uploads/default/original/3X/1/4/1474d7173c6a92dcbc2fbedb56339e178c5209b5.jpeg)]

現(xiàn)在,我們使用 Rest-Assured 來編寫一個(gè)簡(jiǎn)單的測(cè)試程序調(diào)用相同的Get請(qǐng)求:

  • 第一步,我們要判斷這是什么格式數(shù)據(jù):json
    • 第二步,確定請(qǐng)求地址:從charles的結(jié)果中獲取y為https://xueqiu.com/stock/search.json
  • [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-A97fImNC-1650787679683)(https://ceshiren.com/uploads/default/original/3X/9/a/9af5988eb450cfb9e7f227ea03d0ba8e2c6c1589.png)]
    • 第三步,填寫表單:從chrome瀏覽器檢查結(jié)果中查詢r(jià)equest的query信息是code:sougou
  • [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-inbrajvf-1650787680985)(https://ceshiren.com/uploads/default/original/3X/2/b/2b60684f2cd10aa568fd867b1bc8ddd3cdb0fe2a.png)]
    我們的代碼也很簡(jiǎn)單:
    [外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-uEHIEyj7-1650787682241)(https://ceshiren.com/uploads/default/original/3X/a/e/ae31cd8cc9695ecd0a688f2e10d845e09f7adb42.jpeg)]

返回的結(jié)果卻很殘酷:

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-4smJIJzB-1650787682866)(https://ceshiren.com/uploads/default/original/3X/c/7/c795ce1740844b7788ee188a683b729a1cfef136.png)]

與登陸賬號(hào),刷新頁面有關(guān)的話,我首先想到了cookie,網(wǎng)站都用cookie來保存賬號(hào)相關(guān)信息,于是加入 cookie:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Ayukix76-1650787683902)(https://ceshiren.com/uploads/default/original/3X/d/1/d1df68fbf7180f7bfbd7b3acff147b5022eb3814.jpeg)]

返回結(jié)果正確,你問我驚不驚喜,老實(shí)回答,不驚喜。因?yàn)槲腋悴幻靼诪槭裁匆粋€(gè)查詢需要cookie驗(yàn)證,如果 不加cookie,返回的信息卻是沒有登陸!
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-TkWSodgn-1650787685176)(https://ceshiren.com/uploads/default/original/3X/0/0/00c1b4a7507dea6da3f25b774a461a104d493029.jpeg)]
顯然,我的cookie并不包含登陸信息,因?yàn)槲覊焊蜎]有登陸,當(dāng)然這是網(wǎng)站的設(shè)計(jì),與rest-assured無關(guān)。

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-KdYHkoNB-1650787686438)(https://ceshiren.com/uploads/default/original/3X/2/2/228ad26e63af1d8f7b5dc43398407476dd02848d.jpeg)]

更進(jìn)一步
怎么區(qū)別xml與json
答:你看就知道了嘛,xml長(zhǎng)這個(gè)樣子
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-rNzv6nD4-1650787688052)(https://ceshiren.com/uploads/default/original/3X/d/f/df983a4855195118be403cadd4618c34f578c4c3.jpeg)]

json長(zhǎng)這個(gè)樣子
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-LQXXfUzS-1650787689066)(https://ceshiren.com/uploads/default/original/3X/f/2/f25e6517cf216e63694d30fb25585d51ac57d0c3.png)]

given,when,then分別是什么
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-2fBNzJJD-1650787689813)(https://ceshiren.com/uploads/default/original/3X/c/9/c9dcd136879fcafbe460ffc855e09b6b984c1c10.jpeg)]

答:given用于放置需要的參數(shù),比如上面例子中,我將訪問參數(shù):code和cookie放到了given里;when用于填 寫要訪問的url;then進(jìn)行斷言,來來判斷結(jié)果是否正確。

三、模擬post請(qǐng)求
有的時(shí)候,我們想提交表單,這種情況下使用get會(huì)非常被動(dòng),于是post登場(chǎng)了。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-6zRpXg4l-1650787690600)(https://ceshiren.com/uploads/default/original/3X/a/6/a6c59e7a4617a35691a62a4cfcacf7436da5a36e.png)]

下面是代碼。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-3lQJHe8Q-1650787691001)(https://ceshiren.com/uploads/default/original/3X/0/f/0f72e88d7032bbf9b95ff0e901a396fe4ce74504.png)]

我相信此時(shí)你的內(nèi)心是這樣的。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Ozwr7ZzC-1650787691476)(https://ceshiren.com/uploads/default/original/3X/f/c/fcd91fba88bfea85f370326592c56a114ce02b1f.jpeg)]

別著急,下面我會(huì)講清楚…
在我大萬維網(wǎng)世界中,TCP就像汽車,我們用TCP來運(yùn)輸數(shù)據(jù),它很可靠,從來不會(huì)發(fā)生丟件少件的現(xiàn)象。但是 如果路上跑的全是看起來一模一樣的汽車,那這個(gè)世界看起來是一團(tuán)混亂,非常緊急的警車可能被前面的汽車攔堵在路上,整個(gè)交通系統(tǒng)一定會(huì)癱瘓。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-o2YLOHAt-1650787692308)(https://ceshiren.com/uploads/default/original/3X/f/a/fa69658788575d72c2efcbc6d8af51251cfad02d.jpeg)]

為了避免這種情況發(fā)生,交通規(guī)則HTTP誕生了。HTTP給汽車運(yùn)輸設(shè)定了好幾個(gè)服務(wù)類別,有GET, POST, PUT, DELETE等等,HTTP規(guī)定,當(dāng)執(zhí)行GET請(qǐng)求的時(shí)候,要給汽車貼上GET的標(biāo)簽(設(shè)置method為GET),而且要求 把傳送的數(shù)據(jù)放在車頂上(url中)以方便記錄。如果是POST請(qǐng)求,就要在車上貼上POST的標(biāo)簽,并把貨物放 在車廂里。當(dāng)然,你也可以在GET的時(shí)候往車廂內(nèi)偷偷藏點(diǎn)貨物,但是這是很不光彩;也可以在POST的時(shí)候在車頂上也放一些數(shù)據(jù),讓人覺得傻乎乎的。HTTP只是個(gè)行為準(zhǔn)則,而TCP才是GET和POST怎么實(shí)現(xiàn)的基本。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-DUC8tU7D-1650787693926)(https://ceshiren.com/uploads/default/original/3X/c/8/c8598f075e6bc26226bbaa7d96945f6224e8f6fb.jpeg)]

四、使用斷言
使用equalTo
在前面,我們使用了equalTo判斷值是否是“搜狗”:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-SqgIJkg9-1650787694832)(https://ceshiren.com/uploads/default/original/3X/2/f/2fc174ce3b1208a8dc4dec84579eecdc6e7a99ce.png)]

它的作用顯而易見:判斷值是否相同。比如下面的例子
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-ETRjjtx4-1650787695558)(https://ceshiren.com/uploads/default/original/3X/b/1/b13bfd3e19dc7ae87f68c63e770d4b70050237b8.jpeg)]

如果你想驗(yàn)證lottoId是否等于5,你可以這樣做:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-7846U6d9-1650787696308)(https://ceshiren.com/uploads/default/original/3X/2/0/20443dbaf6e1c330a4e1575f20daafe4a77e15e7.png)]

使用hasItems
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Ob7HHUiy-1650787697026)(https://ceshiren.com/uploads/default/original/3X/5/6/5676349b1cba7b62e4e0c390a3f89126cbce25d5.png)]

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-EOarPTae-1650787697654)(https://ceshiren.com/uploads/default/original/3X/b/9/b928ded901cf25312160ed8328a7042d1452b0a1.jpeg)]
你可以用再次equalTo(),對(duì)winnerId[0]用一次,對(duì)winnerId[1]用一次。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-GJFcy6R0-1650787698911)(https://ceshiren.com/uploads/default/original/3X/6/7/67e357530fb6eae535c2e6c1ad28d5417c0c0935.jpeg)]
哈哈,當(dāng)然不是。你可以使用hasItems,它是這么使用的:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-KBG4UM53-1650787700379)(https://ceshiren.com/uploads/default/original/3X/7/5/7572f65cf4ee8b461d4a7a2da1a74555031d97cf.png)]

從根開始定位
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-vYWI84IB-1650787700823)(https://ceshiren.com/uploads/default/original/3X/f/9/f941f210c8b3a4622f6f663ff78aa9c352762852.jpeg)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-h5jnxXAs-1650787701229)(https://ceshiren.com/uploads/default/original/3X/8/8/8808d34eb4b4fa9fc475d2a83392bfdb1848f0a0.png)]
額…請(qǐng)教王師傅。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-yE8I83XA-1650787701772)(https://ceshiren.com/uploads/default/original/3X/7/5/7572849345bf1e7e80038aeabef21ae139e51692.jpeg)]

比如下面的代碼,我們可以這么驗(yàn)證:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-fHCCDraW-1650787702380)(https://ceshiren.com/uploads/default/original/3X/d/0/d0997a1ff9af9b03ed408c1113985ee3255926df.png)]

使用find
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-j2zUKtky-1650787702924)(https://ceshiren.com/uploads/default/original/3X/3/8/383e3d242fd09c654bd950f607c27a1a002f1692.jpeg)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-axIgal7g-1650787703522)(https://ceshiren.com/uploads/default/original/3X/2/3/23601168d0bebd721882a1220907d64822c8a11d.jpeg)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-FNoEbM4P-1650787704230)(https://ceshiren.com/uploads/default/original/3X/e/b/eb676155427c2987d39624ae51c8aa09e3ec5414.jpeg)]
答對(duì)了,請(qǐng)一定要記住xml和json的區(qū)別,不要混談,那么你能編寫一個(gè)測(cè)試來驗(yàn)證雜貨(groceries)的類別是 否包含巧克力(Chocolate)和咖啡(Coffe)嗎?
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-DWgVXdGz-1650787705884)(https://ceshiren.com/uploads/default/original/3X/f/0/f0492217c9211cff2bd7f4f6e07650cfde3a5646.jpeg)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-EsucEP0Z-1650787706838)(https://ceshiren.com/uploads/default/original/3X/5/3/532a78533aba238546f60e12e0371596479bad32.jpeg)]

這確實(shí)達(dá)到了我的要求,但代碼明顯有很多bug,如果我更改了category的位置,像下面這樣,你的代碼就不 適用了,我不難為你了,請(qǐng)王師傅來解答吧:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-N9ZtWMNM-1650787707568)(https://ceshiren.com/uploads/default/original/3X/1/0/103acbc8194b303b04c3a2366fbf825ee2612fb4.jpeg)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-jM0Qiqij-1650787708073)(https://ceshiren.com/uploads/default/original/3X/6/1/61ea63c3492e55622ab6d393eb72547c078c2d36.jpeg)]
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-nbQAh4zR-1650787708632)(https://ceshiren.com/uploads/default/original/3X/8/f/8fd0632c7b3c4bb3b31036d580ddfeee942acb5f.png)]

find的用法展示的很清楚,不需要我多講,當(dāng)然還有一點(diǎn)要注意,你可以這么使用find:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-JrZQWSl3-1650787709391)(https://ceshiren.com/uploads/default/original/3X/b/9/b9fe9a18b3f8a943ff329ab2ad926e8c84120f40.png)]
**是個(gè)特殊用法,它從xml文檔根部開始,進(jìn)行深度搜索,直到找到符合我們需要的項(xiàng)。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-Xh7AT4tV-1650787710363)(https://ceshiren.com/uploads/default/original/3X/5/2/52bc05833244af550b3e614fae46d2e03ffb023e.jpeg)]
使用findAll
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-RP1VudnB-1650787711339)(https://ceshiren.com/uploads/default/original/3X/d/5/d5c5ef624eacc70a8d979ae86faae045c1d9bd2c.jpeg)]
現(xiàn)在我手頭只有20塊錢,我只能買兩本書,我更喜歡世紀(jì)的諺語和白鯨記,現(xiàn)在的任務(wù)是:挑選出格低于10的書籍,并且標(biāo)題是“世紀(jì)的諺語(Sayings of the Century)”和“白鯨記(Moby Dick)”
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-83qt44Bh-1650787713598)(https://ceshiren.com/uploads/default/original/3X/b/d/bd74c87b6baf6b02726dda375b192569cb191812.jpeg)]

[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-ZVTaG3Ny-1650787714292)(https://ceshiren.com/uploads/default/original/3X/7/e/7e91ddbb086b439dcde1e2e978528627f3209d2b.jpeg)]

對(duì)的,這時(shí)候應(yīng)該使用findAll,可以粗魯?shù)恼J(rèn)為多個(gè)find的疊加。findAll可以篩選出一批符合要求的數(shù)據(jù),而 find只能篩選出一個(gè)符合要求的數(shù)據(jù),這就像是我們只能挑出一個(gè)人領(lǐng)取一等獎(jiǎng),但有很多人可以拿參與獎(jiǎng), 兩個(gè)方法都有自己的用武之地。
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-hlkl4HE7-1650787715957)(https://ceshiren.com/uploads/default/original/3X/8/5/8586cafacb388a578b7f3d71fc1c746b453233ab.jpeg)]
下面的代碼展示了findAll的用法:
[外鏈圖片轉(zhuǎn)存失敗,源站可能有防盜鏈機(jī)制,建議將圖片保存下來直接上傳(img-rFAMENC0-1650787717259)(https://ceshiren.com/uploads/default/original/3X/2/f/2fee65c1240bd52dedb28c7fcfd5c93cbfb4c4ec.png)]

五、提取想要的值
有時(shí)候,我們并不想驗(yàn)證是否正確,我們只想取出這個(gè)值以進(jìn)行下一步處理,比如我想取出next的鏈接:/title?page=2,這種情況怎么辦呢?

下面的代碼判斷內(nèi)容是不是JSON,并且標(biāo)題是My Title的話,就返回href鏈接/title?page=2,這個(gè)值被存放在nextTitleLink中,以供我們以后使用。


當(dāng)然,有兩點(diǎn)需要注意:

  • 返回類型是Response,我們可以用Response.xxx來二次提取想要的值。
    • extract().后面是response()方法,不要寫錯(cuò)了。
      六、更改默認(rèn)值
      rest-assured有很多默認(rèn)值,也正因?yàn)槿绱?#xff0c;需要我們的填的參數(shù)可以很少,也可以很多,就像畫畫一樣,可以很精致,也可以很簡(jiǎn)潔。

      修改端口
      rest-assured發(fā)起請(qǐng)求時(shí),默認(rèn)使用的host為localhost,端口為8080,如果你想使用不同的端口,你可以這樣做:

或者是這樣

或者

修改baseURI和basePath
你也可能改變默認(rèn)的baseURI、basePath

這就意味著,類似 get(“/hello”) 這樣的一個(gè)請(qǐng)求,其實(shí)完整的請(qǐng)求為:http://myhost.com:80/resource/hello , 并且使用基礎(chǔ)授權(quán)認(rèn)證"username" and “password”。

其他
其他的默認(rèn)值可以參考下面:

重置
你也可以重置為標(biāo)準(zhǔn)的baseURL(localhost)、basePath(空)、標(biāo)準(zhǔn)端口port(8080)、標(biāo)準(zhǔn)根路徑root path(" "),默 認(rèn)的認(rèn)證scheme(none)以及URL編碼(true),通過下面的方法重置:

七、specification
在不同的測(cè)試用例當(dāng)中,我們可能會(huì)有重復(fù)的響應(yīng)斷言或者是請(qǐng)求參數(shù),那么我們可以將重復(fù)的這一部分提取出來定義一個(gè)規(guī)范或者模板,這樣的話在后續(xù)的測(cè)試用例當(dāng)中就可以使用這個(gè)規(guī)范模板了。

為了達(dá)到這個(gè)效果,我們可以使用RequestSpecBuilder或 ResponseSpecBuilder來實(shí)現(xiàn),它們之間的區(qū)別 是,前者用在請(qǐng)求中,后者則用在body中。

ResponseSpecification重用
例如,你想在多個(gè)測(cè)試用例中,都使用這樣的斷言:判斷響應(yīng)狀態(tài)碼是否為200,并且Json數(shù)組"x.y"的大小是否 等于2。你可以定義一個(gè)ResponseSpecBuilder來實(shí)現(xiàn)這個(gè)功能:

在這個(gè)例子中,需要重用的兩個(gè)斷言數(shù)據(jù)被定義在"responseSpec",并且與另外一個(gè)body斷言合并,組成了這 個(gè)測(cè)試用例中全部的斷言,那么這個(gè)測(cè)試用例需要全部斷言都通過用例結(jié)果才會(huì)通過,一旦其中一個(gè)斷言失 敗,則測(cè)試用例的測(cè)試結(jié)果為失敗。

RequestSpecification重用
同樣,假如你想在多個(gè)測(cè)試用例中重用請(qǐng)求數(shù)據(jù),可以通過下面的代碼來實(shí)現(xiàn):

這里的請(qǐng)求數(shù)據(jù)被合并在"requestSpec"中,所以這個(gè)請(qǐng)求包含了兩個(gè)參數(shù)(“parameter1"和"parameter2”)以及一 個(gè)頭部(“header1”)。

總結(jié)
本文就rest-assured的基本功能進(jìn)行舉例說明,其中例子大多來自于官方文檔,同時(shí)我也建議大家多去閱讀該開 發(fā)文檔,其中有很多我們沒有講到的東西。 本文參考: rest-assured官網(wǎng):https://github.com/rest-assured/rest-assured/wiki/Usage rest-assured介紹:https://www.ibm.com/developerworks/cn/java/j-lo-rest-assured/ get與post的區(qū)別:https://www.cnblogs.com/logsharing/p/8448446.htm
使用specification:https://www.cnblogs.com/lwjnicole/p/8277468.html

獲取更多技術(shù)文章分享

總結(jié)

以上是生活随笔為你收集整理的如何确保API 的稳定性与正确性?你只需要这一招的全部?jī)?nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯(cuò),歡迎將生活随笔推薦給好友。