RobotFrameWork編寫接口測試及如何斷言
1. 前言
本篇是第一系列(Http接口自動化)的第五課程,如果對系列課程大綱不清楚的,可以查看《RobotFramework系列免費(fèi)課程-開課了~》。
前面我們介紹了,在真正實(shí)施前,需先定好多人協(xié)作過程中約定的接口用例規(guī)范,以及開始時(shí),接口項(xiàng)目如何結(jié)構(gòu)化分層,那么今天,我們來聊聊,用RobotFramework如何編寫接口用例及如何對用例斷言。
2. 開始前的準(zhǔn)備
在寫接口用例前,除了前面幾節(jié)介紹的接口框架環(huán)境準(zhǔn)備、接口用例規(guī)范的制定、項(xiàng)目分層這幾點(diǎn)外,在真正開始寫用 例之前,還有一環(huán)節(jié)是必須的,就是拿到接口的開發(fā)文檔,可以理解就是一份接口的契約文件。
接口開發(fā)文檔獲取一般來講,直接找對應(yīng)接口開發(fā)的人員拿就可以了,這種方式雖然最簡單直接,但在這里筆者并不推薦,正確提倡的做法,在每次接口提測時(shí),需要由開發(fā)人員提供提測單且在提測單中,注明詳細(xì)的提測要求,注意事項(xiàng)以及接口文檔地址等,整個(gè)流程可以用gitlab完美串連起來,既想要的內(nèi)容有了,而且流程也規(guī)范了。
注:以前筆者的公司接口開發(fā)文檔以md格式編寫,在gitlab上以版本管理的形式進(jìn)行集中式管理。
3. 接口編寫套路
3. 1、分析接口文檔
本文用上述截圖的接口為例:【獲取熱門作品列表 get /mfx/play/cdn/opus/getHeatValueOpusList】
由上圖可知,該接口如下信息:
接口作用:獲取某app首頁熱門作品列表
接口類型:Get
接口入?yún)ⅲ?個(gè),page(第幾頁)、pageSize(一頁有多少個(gè))
接口響應(yīng):為Json串,詳細(xì)自行查看。
3.2、設(shè)計(jì)接口用例
按照之前介紹的《RobotFrameWork接口設(shè)計(jì)規(guī)范》中可知,常規(guī)接口在設(shè)計(jì)用例時(shí),至少需包括三類,常規(guī)值用例、異常值用例、接口數(shù)據(jù)校驗(yàn)用例:
3.3 、寫接口用例
數(shù)據(jù)準(zhǔn)備(接口入?yún)ⅲ?> 構(gòu)造請求-> 響應(yīng)斷言
3.3. 1 準(zhǔn)備數(shù)據(jù)(接口入?yún)ⅲ?/strong>
看過我之前的文章就知道,這里說的準(zhǔn)備數(shù)據(jù),對應(yīng)的就是RobotFramework中的測試用例層(之前強(qiáng)調(diào)過在RF中,用例中盡量只存放接口入?yún)?shù)據(jù))
3.3.2 構(gòu)造請求
構(gòu)造請求應(yīng)該來說是整個(gè)接口用例流程中的最難的點(diǎn),因?yàn)楣緸榱朔乐沟谌诫S意刷接口或者破壞接口,都會根據(jù)產(chǎn)品后端特性,對請求設(shè)置各類加密方法,一般來講,需要知道產(chǎn)品私鑰key及加密流程和方法。

3.3.3 響應(yīng)斷言
拿到請求返回的響應(yīng)體后,根據(jù)所需,校驗(yàn)期望的數(shù)據(jù)是否存在響應(yīng)體中,通常最常見的就是校驗(yàn)預(yù)期的code值是否包括在響應(yīng)返回?cái)?shù)據(jù)中。
4. 接口用例如何斷言
接口用例設(shè)計(jì)好之后,如何能讓用例能發(fā)揮價(jià)值主要取決于斷言如何來寫,接口自動化用例的最終目的是通過接入研發(fā)體系的CI持續(xù)集成中,通過接口每日巡檢盡早地發(fā)現(xiàn)因接口變更導(dǎo)致的異常 。那么如何發(fā)現(xiàn)異常 ,簡單來說,就是期望接口返回的數(shù)據(jù)與接口實(shí)際返回的數(shù)據(jù)不一致。而這個(gè)過程就需要通過合理地在接口用例中使用斷言來實(shí)現(xiàn)。
那么有人會問,接口斷言我加了???不就是校驗(yàn)接口返回的code值是否是成功的嗎?我相信至少有一部分人在設(shè)計(jì)接口用例斷言時(shí),只有且僅有校驗(yàn)接口的返回code值,雖然code值的斷言是需要的,但不能僅僅只通過這一種斷言方式來做為接口是否有異常的判斷依據(jù)。
那么接口斷言,需要有幾種呢,從上面接口用例設(shè)計(jì)的截圖中大家也能看出,一般來說至少需要有三種:正常code斷言(正常返回的code值)、異常斷言(異常的code值和異常的msg錯(cuò)誤信息)、接口關(guān)鍵數(shù)據(jù)斷言(校驗(yàn)具體返回的數(shù)據(jù)字段值)
4.1 正常code斷言
4.2 異常code、msg斷言
4.3 接口數(shù)據(jù)斷言
小技巧:
1、接口數(shù)據(jù)斷言時(shí),可以不需要用具體的值進(jìn)行比較,比如想判斷歌曲id返回,不需要拿具體的sondId的值與xxx數(shù)值進(jìn)行比較,因?yàn)閷τ谶@類返回的字段來講,歌曲id都會要求是大于0的數(shù)值,所以斷言時(shí)比較返回的數(shù)據(jù)是否是大于0即可,對于返回的字符串字段而言,比如userLogo用戶頭像字段,比如返回的userLogo用戶頭像數(shù)據(jù)不為空即可。當(dāng)然如果有些特殊場景,需要用具體的數(shù)值比較,可另當(dāng)別論。
2、字段數(shù)據(jù)校驗(yàn)常規(guī)的做法是把所需的字段的值先取回來,再對每個(gè)字段的值加斷言比較,那么如果返回的響應(yīng)體,字段比較多,比如有幾十個(gè)返回的字段,那這個(gè)工作也是非常耗時(shí)的。這里推薦的做法是可以寫一個(gè)公共數(shù)據(jù)遞歸校驗(yàn)方法,比如:
5. 教程目錄大綱(已更新)
RobotFrameWork環(huán)境搭建(基于HTTP協(xié)議的接口自動化)
RobotFrameWork接口設(shè)計(jì)規(guī)范
RobotFramwWork接口項(xiàng)目分層及通用控制方式
6. 下節(jié)預(yù)告
《RobotFrameWork測試數(shù)據(jù)管理》
詳見可:閱讀原文
如想更深入學(xué)習(xí)RF接口設(shè)計(jì)內(nèi)容或有疑問可給筆者留言
或加筆者微信號: jinjian_762357658

浙公網(wǎng)安備 33010602011771號