在進行接口測試過程中,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/

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"
},
{
"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