Service mocking 是一個特別流行的概念,開發和測試人員經常會遇到這個詞。
那什么是Mocking呢?
“Service Mocking, or simulation, is the practice of creating a facsimile environment that works similar to the environment you’re facsimileing”.
也就是說它是在你因為各種情況不能使用到真實服務的時候,應該去使用的東西。
SoapUI是一個經常用來做接口測試的工具,它有開源版本和商業Pro版本兩個版本可以使用。(https://www.soapui.org/)
接口測試里面經常遇到的兩種風格的接口是:
- SOAP webservice
- REST API
因為現在RESTful的接口比較流行,下面我們以REST API Mocking為例子來看一下SoapUI里是怎樣使用的:
MockService模型
MockServices通過暴露任意數量的MockActions來提供模擬服務,每個MockActions可以包含任意數量的配置的MockResponse消息:
- MockService
- MockAction
- MockResponses
SoapUI中的MockService可能如下所示:
- MockResponses
- MockAction
在此示例中,MockService包含兩個操作,一個GET和一個POST。 如果我們打開POST操作,我們可以看到它包含三個的響應:
該操作顯示方法和資源路徑,以及所有MockResponses的列表。 在這種情況下,調度設置 - “序列” - 表示當mockservice收到請求時,響應將按列出的順序使用一次(Sucessful->Already Existing User->Internal Server Error),然后從頭開始。
看“Successful”的回應:
MockResponse包含將為請求返回的可配置信息:HTTP狀態代碼,要包括的任何自定義標題信息和響應體。 腳本和相關設置的標簽位于底部。
Content | Media type還有以下的其它格式,這個可以自己 依據要模擬的接口來選擇。
- application/json
- application/xml
- multipart/form-data
- multipart/mixed
安裝SoapUI的時候同時會有一個SoapUI-Tutorials目錄,在這個目錄里面有一些例子,比如要想看一個REST API測試項目時,在菜單欄File->Import Project中選擇目錄下的Sample-REST-Project-soapui-project.xml文件,此時界面上會看到導入的REST API測試項目:
在已有的測試的項目中創建一個模擬服務從現有的服務是非常簡單的。
右鍵單擊 服務
選擇 生成模擬服務
打開一個對話框窗口。
輸入一個描述性的名稱。
點擊 OK。
總的來說,SoapUI的Mock server對于不懂代碼的人來說還是一個比較好用的Mock模擬工具,不過如果會代碼的人我還是推薦自己上手寫吧,畢竟很多參數的調整和接口的加密要求等等更順手一些。
比如Python中的另一個Mock庫,參見:[Python中好用的第三方mock庫-httmock](http://www.lxweimin.com/p/21597fc00fee)