軟件接口測(cè)試工具篇
- Python requests -
在軟件測(cè)試領(lǐng)域中,如果按照軟件研發(fā)周期維度給測(cè)試分類的話,集成測(cè)試是一種重要的測(cè)試手段,它在單元測(cè)試和系統(tǒng)測(cè)試之間能夠起到橋梁的作用,而接口測(cè)試又恰恰是集成測(cè)試能夠抽象而且可執(zhí)行的一個(gè)分支,接口測(cè)試是驗(yàn)證系統(tǒng)組件間的接口耦合交互,檢測(cè)外部系統(tǒng)與系統(tǒng)之間以及內(nèi)部各個(gè)子系統(tǒng)之間的交互點(diǎn)。測(cè)試的重點(diǎn)是要檢查數(shù)據(jù)間的交換,傳遞和控制管理過(guò) 程,以及系統(tǒng)間的相互邏輯依關(guān)系等CBA時(shí)代軟件的復(fù)雜度更是呈幾何級(jí)增長(zhǎng)和聚合,由此給BUG的滋生提供了肥沃的土壤,這也是接口測(cè)試的意義所在。
關(guān)于軟件測(cè)試更多理論知識(shí)我們?cè)诹硪粋€(gè)篇幅中分享介紹,今天主要和大家分享Python語(yǔ)言中requests庫(kù)在接口測(cè)試中的使用。
接口測(cè)試工具眾多,比如大名鼎鼎的SoapUI,Apache旗下性能與接口集一身的Jmeter、Chrome瀏覽器Postman插件等等,都可以完成接口類型測(cè)試,各有優(yōu)點(diǎn),孰輕孰重可以根據(jù)項(xiàng)目需求和軟件集成接口協(xié)議來(lái)適配選擇。本篇主要給大家推薦的是基于Python語(yǔ)言的requests庫(kù),requests采用 Apache2 Licensed 開源協(xié)議的 HTTP 庫(kù),requests 不僅簡(jiǎn)潔易用,而且維護(hù)文檔詳實(shí),社區(qū)版本支持力度活躍,用Python做接口測(cè)試requests是推薦的選擇,同時(shí)requests可以和python 下的單元測(cè)試框架unittest集成,完美實(shí)現(xiàn)接口測(cè)試自動(dòng)化,測(cè)試結(jié)束后,通過(guò)HTMLTestRunner生成測(cè)試報(bào)告,smtplib郵件發(fā)送結(jié)果。
下面以優(yōu)云數(shù)智PaaS產(chǎn)品線Solar組件的接口自動(dòng)化測(cè)試框架SRAT為例分享requests的使用:
一、測(cè)試環(huán)境的準(zhǔn)備如下:
|
** 軟件**
|
** 版本**
|
|
操作系統(tǒng)
|
Windows7
|
|
Eclipse
|
Oxygen.1a Release (4.7.1a)
|
|
Pydev
|
6.4.0
|
|
Python
|
3.6.3
|
|
requests
|
2.18.4
|
|
unittest
|
2.1
|
|
HTMLTestRunner
|
0.8.2
|
|
備注:
1、Python目前分兩個(gè)版本Python2x和Python3x,requests完全支持Python3x。
2、requests、unittest安裝通過(guò)pip3 install xxx 安裝即可。
3、HTMLTestRunner直接放到Python的Lib目錄下就可以了。
|
二、SRAT****接口自動(dòng)化
Public.py 將Solar組件的每個(gè)大功能封裝成為一個(gè)類,同時(shí)在類下面每一個(gè)接口定義為一個(gè)方法,然后通過(guò)requests實(shí)現(xiàn)接口協(xié)議封裝的好的部分,在Case*.py測(cè)試用例時(shí)直接使用該公共類抽象出的對(duì)象就可以了,這樣做到全局復(fù)用。
Case *.py 是將每個(gè)大類下面的具體接口編寫測(cè)試用例,在測(cè)試用例里面來(lái)實(shí)現(xiàn)每一個(gè)測(cè)試接口所要的測(cè)試內(nèi)容,每一條測(cè)試Case最后用到unitest來(lái)斷言測(cè)試結(jié)果和預(yù)期結(jié)果,作為在測(cè)試報(bào)告中標(biāo)注測(cè)試是否通過(guò)。
Report.py是執(zhí)行自動(dòng)化測(cè)試的入口,里面HTMLTestRunner定義了測(cè)試報(bào)告生成、smtplib郵件發(fā)送兩大塊內(nèi)容。
report文件夾用來(lái)存放每次執(zhí)行接口自動(dòng)化測(cè)試生成的報(bào)告。
config.ini配置文件可以用來(lái)配置郵件的相關(guān)信息,例如發(fā)送接收人,郵件服務(wù)器信息等。
三、SRAT****接口自動(dòng)化測(cè)試公共類Public.py****實(shí)現(xiàn)(以User API****為例):
User業(yè)務(wù)功能中總共包括8個(gè)接口,分別實(shí)現(xiàn)不同的和用戶相關(guān)功能,將User封裝為類Class UserAPI,然后在UserAPI Class中分別對(duì)每一個(gè)接口功能定義一個(gè)方法實(shí)例,準(zhǔn)備給對(duì)應(yīng)的接口測(cè)試用例來(lái)調(diào)用,這樣比較邏輯清晰,易于修改和復(fù)用,下面是實(shí)現(xiàn)代碼。
四、SRAT****接口自動(dòng)化測(cè)試用例類Case.py****實(shí)現(xiàn)(以CaseUser ****為例):*
在User API里面定義好公共類后,在CaseUser就需要使用公共類定義好的方法了,CaseUser里面繼承了Python 單元測(cè)試框架 unittest的方法(關(guān)于unittest實(shí)現(xiàn)原理類似于java里面的junit,大家可以自行查找資料,比較好理解),測(cè)試結(jié)果和預(yù)期結(jié)果通過(guò)斷言assert來(lái)比較,SRAT主要是判斷接口請(qǐng)求后response返回的狀態(tài)碼和返回狀態(tài)信息來(lái)斷言。然后將所有的測(cè)試用例組織到測(cè)試套件unittest.TestSuite()自動(dòng)化完成測(cè)試用例的執(zhí)行,執(zhí)行完所有的測(cè)試用例后用HTMLTestRunner.HTMLTestRunner()生成測(cè)試報(bào)告,代碼如下。
五、SRAT****接口自動(dòng)化Report****測(cè)試執(zhí)行及報(bào)告發(fā)送:
測(cè)試公共類Public和測(cè)試用例Case* 編寫完成后,就可以進(jìn)入測(cè)試執(zhí)行環(huán)節(jié),分兩部分:一部分是測(cè)試執(zhí)行環(huán)節(jié),unittest.defaultTestLoader.discover()用來(lái)執(zhí)行測(cè)試用例部分,自動(dòng)調(diào)用Case*.py,Case*.py繼續(xù)再調(diào)用Public對(duì)應(yīng)實(shí)現(xiàn)方法,測(cè)試用例執(zhí)行完畢后,調(diào)用send_mail()方法發(fā)送測(cè)試測(cè)試報(bào)告,整個(gè)接口測(cè)試過(guò)程就完畢了,實(shí)現(xiàn)代碼如下。
測(cè)試執(zhí)行完畢后在Eclipse 控制臺(tái)顯示的測(cè)試。
六、SRAT****接口自動(dòng)化郵件報(bào)告查看:
下面是SRAT接口自動(dòng)化測(cè)試完成HTMLTestRunner生成報(bào)告后發(fā)送給相關(guān)人員,打開可以查看本次接口測(cè)試執(zhí)行情況,包括測(cè)試用例的通過(guò)率、通過(guò)、錯(cuò)誤、失敗、所有,對(duì)每一個(gè)用例集下的測(cè)試用例有詳細(xì)的統(tǒng)計(jì),失敗或錯(cuò)誤了的原因,如下測(cè)試報(bào)告展示。
總結(jié)上面SRAT實(shí)現(xiàn)接口自動(dòng)化測(cè)試分享了Python requests使用,從測(cè)試角度講,關(guān)鍵部分是測(cè)試框架搭建和測(cè)試用例的編寫,本次SRAT是首先將接口公共部分封裝類后,然后再在測(cè)試用例調(diào)用實(shí)現(xiàn)公共的方法去測(cè)試對(duì)應(yīng)接口,其實(shí),這個(gè)測(cè)試還需要有一定的Python代碼基礎(chǔ),如果從黑盒子角度可以將測(cè)試框架和測(cè)試用例完全解耦分離,測(cè)試用例用excel或YAML文件來(lái)實(shí)現(xiàn)測(cè)試用例就更好了,期待后面改進(jìn)一版。
上面有不妥之前敬請(qǐng)和我聯(lián)系,一起交流溝通,謝謝!后面有機(jī)會(huì)和大家一起分享測(cè)試基礎(chǔ)理論、測(cè)試工具集合、存儲(chǔ)測(cè)試入門、大數(shù)據(jù)性能測(cè)試等內(nèi)容。
requests****官方參考文檔:
http://docs.python-requests.org/zh_CN/latest/user/quickstart.html
http://www.python-requests.org/en/master/
https://pypi.org/project/requests/
優(yōu)云數(shù)智介紹
優(yōu)云數(shù)智(上海優(yōu)銘云計(jì)算有限公司)是一家專注于提供企業(yè)級(jí)私有云產(chǎn)品與解決方案的云計(jì)算廠商,提供PaaS+IaaS的一站式解決方案。優(yōu)云數(shù)智的母公司是中國(guó)中立的公有云服務(wù)商UCloud。私有云技術(shù)來(lái)源于全球頂尖的OpenStack、Ceph、Kubernetes云計(jì)算開發(fā)團(tuán)隊(duì)。
掃描關(guān)注,了解更多