因?yàn)楸菊碌膬?nèi)容是使用jq工具配合完成乐严,因此在開始部分會(huì)先花一定的篇幅介紹jq機(jī)器使用,如果讀者已經(jīng)熟悉jq艳吠,可以直接跳過這部分麦备。
先來看應(yīng)用場(chǎng)景,App 經(jīng)常會(huì)有一些信息展示的列表頁(yè)昭娩,比如商家的菜品凛篙、股票的公司、文章的列表展示等栏渺,例如下面這樣:
菜品不夠吃的話~不是呛梆,是菜品數(shù)量較少不夠測(cè)試的量,假如我們想要測(cè)試幾百個(gè)菜品時(shí)磕诊,會(huì)不會(huì)在刷的時(shí)候是否有性能影響,展示是否正常填物,列表展示的邊界值測(cè)試等纹腌;
而要測(cè)就得有數(shù)據(jù)展示,這個(gè)時(shí)候要是通過后端去找或者造這么多數(shù)據(jù)是有點(diǎn)麻煩的,其實(shí)我們這個(gè)測(cè)試的測(cè)試點(diǎn)就是要測(cè)試前端頁(yè)面的展示和性能滞磺,只要有這部分?jǐn)?shù)據(jù)就可以升薯,無所謂數(shù)據(jù)是否真實(shí)從數(shù)據(jù)庫(kù)得來。
這個(gè)時(shí)候可以就可以利用mock的手段击困,對(duì)這種大數(shù)據(jù)進(jìn)行等價(jià)類的生成涎劈,使前端可以拿到這類數(shù)據(jù)即可,而Charles正是我們實(shí)現(xiàn)手工mock測(cè)試的利器之一阅茶!
按慣例蛛枚,先看官網(wǎng)對(duì)jq的解釋:
jq 官網(wǎng)地址:jq
大概意思就是輕量靈活的Json處理命令行。
用途
說到這大概有些人有點(diǎn)感覺它能用來做什么了脸哀,為啥手工mock要使用jq了蹦浦?沒錯(cuò)!要用它來處理接口返回的json數(shù)據(jù)以達(dá)到mock的效果撞蜂。
Mac:Mac還是一如既往的簡(jiǎn)單(香~)盲镶,裝了Homebrew 的話一條命令brew install jq即可
其他系統(tǒng):jq 的官網(wǎng)很貼心,給出了各個(gè)系統(tǒng)的下載方式及其相關(guān)所需下載工具的鏈接蝌诡,具體的就查看官網(wǎng)吧徒河,鏈接如下
基本過濾 .
簡(jiǎn)單的說就是原樣輸出來:對(duì)象過濾 .key、.key1.key2送漠、.[“key”]
索引過濾 .key[index]、.key[ startIndex: endIndex]
.key[index]
.key[ startIndex: endIndex]對(duì)象構(gòu)建 {} 由蘑、
如果其中一個(gè)表達(dá)式有多個(gè)結(jié)果闽寡,那么輸出也會(huì)產(chǎn)生多個(gè)結(jié)果
如果key是不存在的,value將會(huì)賦值為null
如果再鍵的周圍加括號(hào)就意味著它將作為表達(dá)式進(jìn)行計(jì)算尼酿。其他常見用法:
計(jì)算
獲取長(zhǎng)度數(shù)組運(yùn)算
jq 對(duì)于數(shù)組可以有并集(’+’)和差集(’-’)的操作:
并集(’+’):有數(shù)組a,b; a+b就會(huì)得到一個(gè)包含所有a,b數(shù)組元素的新數(shù)組:
差集(’-’):有數(shù)組a,b; a-b就會(huì)得到一個(gè)只包含a中元素爷狈,不包含b中元素的新數(shù)組:更多用法
更多用法可參考官網(wǎng):
https://stedolan.github.io/jq/manual/#Basicfilters
如下圖中的科普推薦欄目中有 2 則科普文章,現(xiàn)在想要mock幾十甚至上百篇文章或廣告裳擎。抓取接口的響應(yīng)json報(bào)文如下:
我們將數(shù)據(jù)存入json文件中涎永,然后賦值給一個(gè)變量
然后我們利用jq對(duì)pageList中的列表進(jìn)行+=操作,完成一次翻倍增長(zhǎng)鹿响,將結(jié)果傳給變量mockData羡微。
按照上述的方法,每次列表的元素個(gè)數(shù)都會(huì)翻倍惶我,也就是操作n次就變成2的n次方倍妈倔,指數(shù)增長(zhǎng)的速度就不用多說了~
這樣根據(jù)自己的需要得到數(shù)據(jù)后將新數(shù)據(jù)存入json文件,最重要的數(shù)據(jù)準(zhǔn)備過程也就完成了:
說了這么多“廢話”绸贡,總算是到了主角了盯蝴,其實(shí)數(shù)據(jù)準(zhǔn)備好了毅哗,工具的使用還是很簡(jiǎn)單的,Charles有一個(gè)叫做Map Local的功能捧挺,在你要mock的請(qǐng)求上右擊就可找到:
Map Local可以對(duì)指定的接口返回使用本地文件進(jìn)行替換虑绵,如這里替換為上文中廢話半天生成的數(shù)據(jù)文件MockTest.json:
然后再次刷新頁(yè)面,看看效果闽烙,頁(yè)面的列表就如愿倍增了翅睛,也不用去數(shù)據(jù)庫(kù)添加數(shù)據(jù),保存一份json文件即測(cè)即用即可:
以上鸣峭,期待大家一起交流宏所,多多指正。
【相關(guān)文章】基于 Charles 代理技術(shù)的接口測(cè)試 Mock 實(shí)戰(zhàn) (一)
接口測(cè)試策略與問題分析模型
喜歡軟件測(cè)試的小伙伴們摊溶,如果我的博客對(duì)你有幫助爬骤、如果你喜歡我的博客內(nèi)容,請(qǐng) “點(diǎn)贊” “評(píng)論” “收藏” 一鍵三連哦莫换!