postman+newman+jenkins接口自動化

選擇postman的原因很簡單,開源,上手快,操作簡單,可參考的帖子也多,短期內可以做出成果,配合newman和jenkins部署在服務器上後也可以定時執行並且發送郵件給相關人員,同樣也能達到自動化的目的;當然有時間的化還是建議自己寫代碼測試,畢竟相對來說更靈活,沒有工具的侷限性,也更能培養測試人員的代碼思維能力!

首先拿到接口文檔,如果項目組沒有接口文檔那便自己使用抓包工具一個個去查,推薦charles; 廢話不多說,直接上圖

如果你的腳本是json格式:選擇body,raw格式,右側選擇語言格式

這裏選擇json

如果你的腳本是h5-form

回參的格式如下:

這上面圈出來的每個信息都是需要關注的,依次是返回的正文內容,cookies,頭部信息及斷言的結果,因爲自動化接口之所以叫自動化,是你不需要一個個接口去查看返回結果是否正確,而是根據你的斷言去判斷結果,最後你只需要在執行報告裏查看pass或fail的接口即可;右側是服務器狀態碼,這個需要注意,200只是意味着你的服務器工作是正常的,但並不意思返回的接口信息就一定是你想要的,比如你想請求一個不存在的頁面,那麼返回404纔是你想要的結果 ;time接口返回時間,通常做爲一個接口性能的參考,超過1.5s就需要關注下,size返回的大小;

這個是test裏的斷言:這個斷言不對應上面的接口,只是選擇了一個相對有參考意義的test

有些接口有上下關係的依賴或者你需要校驗接口信息返回的正確和一致性,比如我們在這個接口獲取到了學校的名稱get school name,獲取token也是一樣的道理(ps右側圈起來的是postman的一些現成的斷言方法,點擊即可自動生成語句,有興趣的自己研究下)

//我今天回頭再看自己寫的筆記,發現好像不太能給人提供幫助,說明太少了...,我現在補充下,上面那個圖片,依次是:

校驗返回裏是否有上述的文本

校驗返回裏是否有200的狀態碼

轉換返回的格式爲jsondata以便識別,建議都加上

校驗返回是否有0000的狀態碼,因爲我們的程序是用0000來表示返回成功

響應的超時時間不超過600ms

後面if的那一堆,應該只有中間那句有用,設置環境變量(如果返回的body有多個節點時,需要明確指向是哪個節點,例如content[0])

var data = postman.getResponseHeader("Authorization");//獲取返回的header裏的數據--新的程序裏把校驗的authorization寫到了header裏,之前是直接在body裏返回的;算是多了一種獲取返回的方式吧
pm.environment.set("Authorization",data); 把header裏的值設置爲環境變量,這樣在下次的請求裏就可以把這個authorization做爲參數放到請求的header裏了

這個是去校驗上一個接口獲取到的學校名稱是否和下個接口返回的一致--對比結果,當初這句話怎麼寫花了我很長時間研究~~無奈

然後我們說下參數化,前面可能也會看到,我有把localtest的地方圈起來,此處的環境是變量,localtest 是測試環境地址,pretest則是預發環境地址,如果我們要運行測試環境,只需要把環境選擇爲localtest即可,所有的請求地址前面都會自動讀取這裏設置的baseurl地址,這樣也就達到了腳本的重用性,在預發環境的時候你就不必再重新編寫一份了,只需要切換環境去讀取預發的baseurl地址即可;還是不懂的自行百度

好啦,然後是運行你的集合,點這裏會新打開一個runner的窗口

然後我通常是這麼設置,循環一次,反正不是測試性能,延遲300毫秒,防止個別接口返回較慢,有依賴關係的接口可能會獲取不到上個接口的返回導致失敗的;

完事你就可以查看運行的接口了,此處你就可以看到添加斷言的好處了,結果一目瞭然,紅色不通過的單獨點開看看

如果你想單獨調試某個接口,點擊左上角的菜單view--show postman console,打開這個窗口後再點擊你要調試的接口,此時這個窗口會展示詳細的入參和返回及其它信息,目前我主要是用它來檢查我的參數化是否生效

居然寫了這麼長,我都要吃飯了;說下設置定時運行的吧,點擊你的集合右側的...,看到了吧,monitor,打開它,怎麼設置一目瞭然,不再綴述

運行時間及環境,每次運行完會發送郵件,注意,這裏只有失敗的情況下,即斷言不通過的時候纔會發

postman的部分講完了,可能還有很多其它功能沒有講到,主要是因爲我沒用到,有興趣的童鞋自己研究;

下面是newman,其實一開始一直搞不清newman有什麼用,感覺很雞肋,頁面又不酷炫;等我做完所有的接口想要把他完全自動化,並且能發送郵件給相關人員的時候,我才真正明白了點它的用處,且往下看

http://www.cnblogs.com/weizhideweilai/p/9801003.html  參考這個帖子先安裝nodejs,在我寫這個帖子的時候,我用的版本是,之前安裝的是4還是5忘了,運行提示出錯,具體啥錯忘了,這就是不及時寫博客的壞處~~反正升級後運行正常;安裝nodejs的好處就是你可以用npm install -g newman 這一行簡單的命令去下載newman, 然後npm install -g newman-reporter-html,我下載失敗,希望你們能成功!

然後從postman上export你的集合文件到本地,下載你的環境變量到本地,然後在cmd窗口運行這一行命令,第一個C盤路徑讀取的是剛剛下載的集合,後面的-e是指運行environment變量, 後面D盤是報告生成的路徑

newman run C:\Users\24661\Desktop\test_presidentAPP.postman_collection.json -e C:\Users\24661\Desktop\localtest.postman_environment.json --reporters html --reporter-html-export  D:\html01.html

報告的樣子就是這樣,還是不錯的(我剛剛前面好像說我html報告格式下載失敗,哈哈,不用管它,可能後來被我堅持不懈弄好了)

最後是集成jenkins

新建一個自由風格的項目,其它的隨便百度下寫寫,這裏圈起來的是兩個你剛剛下載到本地的文件,集合和環境變量,前面是你放在服務器上的路徑

定時構建:https://blog.csdn.net/zzy1078689276/article/details/77520441/

  在【配置】頁面中,下拉到【構建觸發器】,在這裏有兩個可選選項,分別是“Build periodically”和“Poll SCM”,它們的特點如下:

  • Build periodically

  無論SVN中數據有無變化,均執行定時化的構建任務

       poll SCM:有變化就執行

執行完後發郵件給相關人員:

有一個小技巧,在“構建後操作”裏添加釘釘插件,使用釘釘機器人通知到羣,這裏裏的URL當前jenkins的地址,構建完後會有結果通知到羣裏,用戶可以直接點擊構建結果查看詳情,比較方便

構建完羣裏收到的通知:

點擊構建結果可以直接在console output查看詳情:

完結撒花,想到再補充

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章