來啦老鐵9邗巍!身诺!
這兩周已經(jīng)開始通勤上班了蜜托,路途遙遠(yuǎn),經(jīng)常沒把電腦帶回來了霉赡,周末例外橄务。趁著周末手里有電腦,上點(diǎn)干貨同廉!廢話不多說仪糖,我們直接從postman工具聊起吧8趟尽(關(guān)于Postman是啥迫肖,基本使用介紹锅劝,我們就不再贅述了,大家可以看看這方面的文章學(xué)習(xí)和溫習(xí)一下)蟆湖。
postman可是個神器啊故爵,用6了,可以做到API半自動化的效果隅津,甚至結(jié)合其他技術(shù)手段诬垂,可以做到真正的小型API自動化,接下來就是見證奇跡的時(shí)刻伦仍!
1.腳本和斷言介紹结窘;
postman為用戶提供了2個腳本入口,一個叫Pre-request Script充蓝,一個叫Tests隧枫,用戶可在這兩個入口使用javascript腳本和postman預(yù)置的語句,對請求前后做一些操作谓苟。
Pre-request Script
這個代表在發(fā)起請求前做的一些操作官脓,通常我們可以用其做一些數(shù)據(jù)準(zhǔn)備、調(diào)用其他簡單接口等操作涝焙,官網(wǎng)介紹:https://learning.postman.com/docs/postman/scripts/intro-to-scripts/
我們以一個免費(fèi)接口 https://api.apiopen.top/getJoke?page=1&count=2&type=video 為例卑笨,假設(shè)我們每次想要獲取不同數(shù)量(參數(shù)count)的數(shù)據(jù),那么我們就必須在請求前設(shè)置好數(shù)量仑撞,這時(shí)候Pre-request Script就派上用場了赤兴,我們將接口參數(shù)化如:https://api.apiopen.top/getJoke?page=1&count={{count}}&type=video
postman上準(zhǔn)備如下:
pm.globals.set(key, value):在postman中設(shè)置全局變量的用法(除了全局變量,postman還有環(huán)境變量隧哮,讀者朋友請自行腦補(bǔ)哈)搀缠;
{{}}:postman引用環(huán)境變量、全局變量時(shí)需用2對花括號包裹近迁;
$randomInt:postman內(nèi)置的獲取1~1000隨機(jī)數(shù)的變量艺普,當(dāng)然我們也可以用js代碼在Pre-request Script獲取一個隨機(jī)數(shù),然后放到pm.globals.set()里頭鉴竭,但不是人人都會歧譬,而postman就很人性化地提供了一些較為常用的內(nèi)置變量,方便用戶使用搏存。
postman的內(nèi)置變量還是比較豐富便捷的瑰步,比如$timestamp可獲取當(dāng)前時(shí)間戳,$randomPhoneNumber可獲取10位隨機(jī)電話號碼璧眠,還有一些非常擬真的隨機(jī)數(shù)據(jù)缩焦,如$randomFirstName和$randomLastName生成的是看起來非常真實(shí)的名字读虏,比如Felton Jones,而不是隨機(jī)的文字而已袁滥,這非常人性化呀盖桥!
其他postman內(nèi)置變量可以通過以下途徑了解:
在Url上,輸入{符號+空格题翻,可查看支持的內(nèi)置變量揩徊;
在非Url上,輸入{符號嵌赠,可查看支持的內(nèi)置變量塑荒;
當(dāng)我們點(diǎn)擊Send按鈕后脏答,postman先為我們準(zhǔn)備好一個隨機(jī)數(shù)放到全局變量中枪向,請求時(shí)postman將從環(huán)境變量中獲取這個變量,然后發(fā)起請求和執(zhí)行后續(xù)的其他操作吃溅;
Tests
這個代表在請求完成后做的一些操作炊豪,通常我們會在此處做一些校驗(yàn)凌箕、數(shù)據(jù)存儲、調(diào)用其他簡單API等操作溜在,官網(wǎng)介紹:https://go.pstmn.io/docs-test-scripts
此處陌知,我校驗(yàn)了HTTP返回碼是否為200;API返回?cái)?shù)據(jù)中掖肋,result數(shù)組的長度是否與請求參數(shù)count相等仆葡;result數(shù)組中第一個元素的sid參數(shù)是否不為空;同時(shí)志笼,我還將sid存儲到全局變量池中沿盅,供后續(xù)其他API使用。
基于Pre-request Script和Tests纫溃,我們可以在某些場景下自動地準(zhǔn)備數(shù)據(jù)腰涧,并完成測試點(diǎn)驗(yàn)證,測試時(shí)不用再人為地填充數(shù)據(jù)紊浩,不用再人工驗(yàn)證API返回或測試點(diǎn)窖铡,一定程度上解放了雙手,我們可以將其歸入半自動化麾下坊谁!
為了介紹使用sid和介紹其他功能费彼,我額外準(zhǔn)備了一個API,即通過sid獲取內(nèi)容:
2.Runner介紹口芍;
有了上述的基礎(chǔ)箍铲,我們一起來進(jìn)階一下,咱們來學(xué)學(xué)Runner這個東西鬓椭,入口和初始界面如下:
假設(shè)我們有多個API颠猴,這個些API間有依賴關(guān)系关划,執(zhí)行完第一個API才能執(zhí)行第二個API,執(zhí)行完第二個才能執(zhí)行第三個翘瓮,以此類推贮折,即使有Pre-request Script和Tests幫助數(shù)據(jù)準(zhǔn)備和測試驗(yàn)證,難道我們一個API一個API的去點(diǎn)嗎春畔?如果再遇到需要頻繁測試API們脱货,或需要大量調(diào)用API來造數(shù)據(jù)岛都,又只能不停的點(diǎn)點(diǎn)點(diǎn)嗎律姨?英語好點(diǎn)的朋友應(yīng)該能看出來了,對臼疫,這個Runner就是來解救大家的择份。
Runner的幾個作用:
控制執(zhí)行順序。通過右側(cè)的RUN ORDER烫堤,我們可以拖動API荣赶,來安排執(zhí)行順序,Runner啟動后就會按我們指定的順序執(zhí)行鸽斟;
批量循環(huán)執(zhí)行拔创。Interations參數(shù)為我們要執(zhí)行的次數(shù)或者叫輪數(shù),Delay是用于控制API的執(zhí)行速度的富蓄,假設(shè)Delay設(shè)置為1000ms, 那么每個API之間將等待1秒剩燥,注意是API間隔,而不是每一輪間隔立倍。
返回信息保留灭红。Save Responses可在執(zhí)行后保留API返回,讓使用者能夠反觀執(zhí)行過程和獲取返回?cái)?shù)據(jù)口注,因?yàn)镽unner有時(shí)候可以用來調(diào)用API批量創(chuàng)造數(shù)據(jù)变擒。
導(dǎo)出測試結(jié)果。Runner跑完后寝志,還可通過Run Results頁面查看本次的統(tǒng)計(jì)報(bào)告娇斑,同時(shí)也可導(dǎo)出本次運(yùn)行的統(tǒng)計(jì)報(bào)告,不過導(dǎo)出的報(bào)告是Json格式的材部,大家參考參考毫缆。
通過Runner,我們可以批量按順序執(zhí)行API們败富,在實(shí)際場景中還是蠻常用的悔醋。Runner可以在一定程度上解放測試人員的雙手,我們可以將Runner歸到半自動化麾下兽叮。大家可以根據(jù)上述涉及的知識點(diǎn)芬骄,自行探索和深入猾愿。
夜已深,咱們今天就到這吧账阻,希望本文對大家有所幫助蒂秘。
下期帶大家在使用postman的基礎(chǔ)上做自動化,敬請期待L蕴R錾!