在進行接口測試過程中,Moco可以通過簡單的配置request和response 對象,達到模拟後端傳回的效果
- 支援HTTP、HTTPS、socket協定;
- 支援在request中設定Headers、cookies、statusCode;
- 支援get、post、put、delete請求;
- 無需環境配置,隻需要java運作環境即可;
1、下載下傳安裝
moco jar包下載下傳位址:https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/1.1.0/
![](https://img.laitimes.com/img/9ZDMuAjOiMmIsIjOiQnIsIyZuBnL1UjN5kTO5gDMx0CM1MzMxkTM1ETMyITMwIDMy0yN4ATOxQTMvwlMxAjMwIzLcdDOwkTM0EzLcd2bsJ2Lc12bj5ycn9Gbi52YuAjMwIzZtl2Lc9CX6MHc0RHaiojIsJye.png)
2、moco使用
1)建立檔案夾,将下載下傳好的 moco-runner-1.1.0-standalone.jar 檔案放入檔案夾中去,建立user.json檔案,用于配置請求和響應内容
{
"request":{
"method":"post",
"uri":"/jiekou",
"headers":{"Content-type":"application/json"},
"json":{"id":"12306","name":"moco"}
},
"response":{
"status":"200",
"text":"ceshi"
}
}
2)
"request":{
"headers":{"Content-Type":"application/json;charset=UTF-8"}, // 請求 headers
"method":"post",
"uri":"/jiekou2",
"json": {
"type": "1",
"data": {
"citeCaseId": "11111111",
"party": [
{
"partyId": "001",
"name": "張三",
"agent": [
{
"agentId": "002"
},
}
]
}
]
}
}
},
"response":{
"status":"200",
"headers": {
"Content-Type":"application/json;charset=UTF-8" // 響應的 headers
"json":{"code":101,"message":"必要參數缺失。"}
}
3)
"request":
{
"headers":{"Content-Type":"application/json"},
"method":"get",
"uri":"/getList",
"queries":{"sasj":"20100101"} // 帶參數的GET請求,如 localhost:8880/getList?sasj=20100101
"response":
"file":"build.xml"
// 請求傳回檔案(可以傳回xml中的内容,将xml檔案放在與jar包同級目錄下即可, "file":"files/build.xml",user.json所在目錄下的二級目錄files)
注意
若要同時模拟多個接口,可以用[ ]括起來,并用,分割,也就是json的格式。
3、啟動mock
cmd 進入moco-runner-1.1.0-standalone.jar 所在檔案夾,執行下面指令
java -jar moco-runner-1.1.0-standalone.jar http -p 8881 -c user.json
運作成功。直接使用postman或者其他接口調用工具調用接口即可。
4、分子產品
使一個項目會分好幾個子產品,如登入注冊等員工子產品、聊天子產品、博文子產品等,會有很多很多請求,如果我們把不同業務的mock資料都寫在一個檔案裡面,那就太難看了,為此,我們需要做一些改變來解決這個問題
下面以TodoList.json為例
// 在根目錄下建立 TodoList.json 檔案,内容如下
[
{ "context": "/user", "include": "user.json" },
{ "context": "/newUser", "include": "data.json"}
]
這樣,當我們通路
http://localhost:8880/user/userInfo 和 http://localhost:8880/newUser/newUserInfo 時候
會跳到後面對應的 json 再處理一遍
// user.json
[{"request":{"uri":"/userInfo"},"response":{"json":{"username": "Sampson"}}}]
// newUser.json
[{"request":{"uri":"/newUserInfo"},"response":{"json":{"username": "NewSampson"}}}]
Moco支援在全局的配置檔案中引入其他配置檔案,這樣就可以分服務定義配置檔案,便于管理。
配置好檔案,在全局檔案中引入即可:
全局配置如下:
java -jar moco-runner-1.1.0-standalone.jar start -p 8880 -g TodoList.json
注意,此時需要通過參數
-g
在加載全局配置檔案。,使用的不是
-c
了
原文:https://blog.csdn.net/vite_s/article/details/54583243
5、Mock測試存在的問題
使用Mock測試有時可以提高團隊的開發效率,但當B、C都開發完成代碼後,這時應該把E2E測試代碼從使用Mock測試改為調用真實的子產品,以避免出現子產品之間內建部分漏測的問題。這裡說mock存在的問題,主要是讓開發和測試不要過分的依賴/相信mock接口。
使用mock時,切記的幾點:
1)測試人員不應該被覆寫率高的E2E自動化測試所迷惑,覆寫率高不代表沒有問題。尤其在接手新項目中,需要檢視E2E測試中有沒有使用Mock測試,進一步去判斷這些地方使用Mock測試是否合理,這些Mock測試是否應該換成真實子產品間的調用和內建。
2)當把mock接口換成實際接口後,測試/開發也必須把之前的測試重新做一遍。
ps: 當你使用mock接口來提高效率,請注意:你的工作量其實是比 直接隻用實際接口 多了 一倍的。如果測試時,偷懶,替換成實際接口後,隻是簡單測試,那麼 當實際接口和mock預期接口有差異時,故障便和你相遇了。
建議: mock接口隻能主流程聯調/ 異常傳回測試,不要過分依賴mock接口進行測試。
3)測試完畢,上線前,請一定確定 為了mock而做的相關代碼/配置檔案的修改,已經完全恢複了
更多用法可檢視本段原文:https://blog.csdn.net/qq_35716699/article/details/90581880