Service mocking 是一個(gè)特別流行的概念僻肖,開發(fā)和測(cè)試人員經(jīng)常會(huì)遇到這個(gè)詞杀狡。
那什么是Mocking呢锈嫩?
“Service Mocking, or simulation, is the practice of creating a facsimile environment that works similar to the environment you’re facsimileing”.
也就是說(shuō)它是在你因?yàn)楦鞣N情況不能使用到真實(shí)服務(wù)的時(shí)候衍慎,應(yīng)該去使用的東西。
SoapUI是一個(gè)經(jīng)常用來(lái)做接口測(cè)試的工具命迈,它有開源版本和商業(yè)Pro版本兩個(gè)版本可以使用贩绕。(https://www.soapui.org/)
接口測(cè)試?yán)锩娼?jīng)常遇到的兩種風(fēng)格的接口是:
- SOAP webservice
- REST API
因?yàn)楝F(xiàn)在RESTful的接口比較流行,下面我們以REST API Mocking為例子來(lái)看一下SoapUI里是怎樣使用的:
MockService模型
MockServices通過(guò)暴露任意數(shù)量的MockActions來(lái)提供模擬服務(wù)壶愤,每個(gè)MockActions可以包含任意數(shù)量的配置的MockResponse消息:
- MockService
- MockAction
- MockResponses
SoapUI中的MockService可能如下所示:
- MockResponses
- MockAction
在此示例中淑倾,MockService包含兩個(gè)操作,一個(gè)GET和一個(gè)POST征椒。 如果我們打開POST操作娇哆,我們可以看到它包含三個(gè)的響應(yīng):
該操作顯示方法和資源路徑,以及所有MockResponses的列表勃救。 在這種情況下迂尝,調(diào)度設(shè)置 - “序列” - 表示當(dāng)mockservice收到請(qǐng)求時(shí),響應(yīng)將按列出的順序使用一次(Sucessful->Already Existing User->Internal Server Error)剪芥,然后從頭開始。
看“Successful”的回應(yīng):
MockResponse包含將為請(qǐng)求返回的可配置信息:HTTP狀態(tài)代碼琴许,要包括的任何自定義標(biāo)題信息和響應(yīng)體税肪。 腳本和相關(guān)設(shè)置的標(biāo)簽位于底部。
Content | Media type還有以下的其它格式榜田,這個(gè)可以自己 依據(jù)要模擬的接口來(lái)選擇益兄。
- application/json
- application/xml
- multipart/form-data
- multipart/mixed
安裝SoapUI的時(shí)候同時(shí)會(huì)有一個(gè)SoapUI-Tutorials目錄,在這個(gè)目錄里面有一些例子箭券,比如要想看一個(gè)REST API測(cè)試項(xiàng)目時(shí)净捅,在菜單欄File->Import Project中選擇目錄下的Sample-REST-Project-soapui-project.xml文件,此時(shí)界面上會(huì)看到導(dǎo)入的REST API測(cè)試項(xiàng)目:
在已有的測(cè)試的項(xiàng)目中創(chuàng)建一個(gè)模擬服務(wù)從現(xiàn)有的服務(wù)是非常簡(jiǎn)單的辩块。
右鍵單擊 服務(wù)
選擇 生成模擬服務(wù)
打開一個(gè)對(duì)話框窗口蛔六。
輸入一個(gè)描述性的名稱荆永。
點(diǎn)擊 OK。
總的來(lái)說(shuō)国章,SoapUI的Mock server對(duì)于不懂代碼的人來(lái)說(shuō)還是一個(gè)比較好用的Mock模擬工具具钥,不過(guò)如果會(huì)代碼的人我還是推薦自己上手寫吧,畢竟很多參數(shù)的調(diào)整和接口的加密要求等等更順手一些液兽。
比如Python中的另一個(gè)Mock庫(kù)骂删,參見:[Python中好用的第三方mock庫(kù)-httmock](http://www.reibang.com/p/21597fc00fee)