接口測試Mock利器--moco runner是如何工作的?

1.什么是MOCO?
moco是一個搭建模擬服務器的工具,其支持API和獨立運行兩種方式。
API運行:通常是在junit等測試框架中使用
獨立運行:是通過一個jar包開啟服務
2.moco能解決什么問題?
Moco是針對HTTP集成而生的,不過,現(xiàn)在也有人把它用在其它需要一個模擬服務器的場景中。比如,在移動開發(fā)中,有人開發(fā)一個移動應用,需要有一個遠端服務,但在開發(fā)時,這個服務還不存在,他就用Moco模擬了一個服務,保證移動應用可以順利的開發(fā)。同樣,也有人把它用在Web前端開發(fā)里,當我們的頁面需要通過與服務器交互時,就可以用Moco模擬這樣一個服務。這種做法在開發(fā)一個頁面原型時,非常有用,因為那個時候,我們還來不及開發(fā)一個完整的服務。
3.moco在接口測試中的作用?
對于前端開發(fā)而言:moco可以模擬服務器,來對開發(fā)出來的頁面,進行交互調(diào)試
那么一般接口文檔輸出后,測試人員可能需要提前進行接口用例的編寫,而這時接口開發(fā)工作還沒完成,如果對接口用例進行執(zhí)行的前提是開發(fā)人員完成接口開發(fā)。這樣,降低測試開發(fā)效率。
這時,如果測試人員使用moco框架,就可以在接口文檔輸出后,在接口開發(fā)完成前,設(shè)計用例過程中,使用moco搭建一個模擬服務器。在用例設(shè)計完成后,即使接口開發(fā)工作還未完成,也可以立即進行執(zhí)行接口用例,在這個過程中可以修改、補充用例,在接口開發(fā)完成以后,只需要簡單的去執(zhí)行所有的接口用例腳本就 OK,省去了很大的工作量,并且這些完善的用例腳本,用自動化去執(zhí)行,效果更佳。
4、Mock服務moco-runner Demo
下載moco-runner的Jar包:
https://repo1.maven.org/maven2/com/github/dreamhead/moco-runner/0.12.0/moco-runner-0.12.0-standalone.jar
準備環(huán)境:
Windows 并且安裝Java環(huán)境。
5、Get請求如何模擬呢?
配置文件config.json
GET請求定義訪問路徑和數(shù)據(jù)格式,如下:
[{
"description":"這是一個帶參數(shù)的get請求",
"request":
{
"method":"get",
"uri":"/login"
},
"response":
{
"text":"返回這是一個帶參數(shù)的get請求"
}
}]
參數(shù)說明:
description是描述
request是請求
uri是請求路徑
response是返回結(jié)果
text是返回的是文本類型內(nèi)容
運行jar包,啟動moco-runner服務
java -jar moco-runner-0.12.0-standalone.jar start -p 8801 -c config.json
參數(shù)說明:
java -jar 是啟動jar文件命令
http -p 是訪問協(xié)議和訪問端口號
-c 是模擬的接口文件

啟動服務之后便可以在瀏覽器中進行測試接口,輸入地址:http://127.0.0.1:8801/login 會返回上述config.json文件中定義的文本內(nèi)容,此處使用postman進行測試,其返回結(jié)果如下:
從上面結(jié)果可看出已經(jīng)正常顯示,不過中文顯示亂碼,需要在配置文件中加入編碼格式,解決中文亂碼問題,這里直接編輯config.json文件保存即可,服務會監(jiān)聽到配置文件的改動之后自動重啟服務。
"headers":
{
"Content-Type":"text/html;charset=gbk"
}


6、Post請求如何模擬呢?
只是post的請求方式中傳遞數(shù)據(jù)的方式不一樣了,所以只需要稍微修改一下config.json內(nèi)容即可,修改如下:
[{
"description":"這是一個帶參數(shù)的POST請求",
"request":
{
"method":"post",
"uri":"/login_post",
"forms":{
"name":"Ruancexiaosheng",
"pwd":"testpwd"
}
},
"response":
{
"text":"返回這是一個帶參數(shù)的POST請求",
"headers":
{
"Content-Type":"text/html;charset=gbk"
}
}
}]
完成修改之后同樣是通過運行jar包啟動moco runner服務,然后使用接口訪問,結(jié)果如下:
java -jar moco-runner-0.12.0-standalone.jar start -p 8801 -c config_post.json

上述的文件中的接口都是單獨存放,當然,所有接口可以維護在一個文件,如下:
[{
"description":"這是一個帶參數(shù)的get請求",
"request":
{
"method":"get",
"uri":"/login"
},
"response":
{
"text":"這是一個帶參數(shù)的get請求",
"headers":
{
"Content-Type":"text/html;charset=gbk"
}
}
},
{
"description":"這是一個帶參數(shù)的POST請求",
"request":
{
"method":"post",
"uri":"/login_post",
"forms":{
"name":"Ruancexiaosheng",
"pwd":"testpwd"
}
},
"response":
{
"text":"這是一個帶參數(shù)的POST請求",
"headers":
{
"Content-Type":"text/html;charset=gbk"
}
}
}]文章合集
Selenium | Appium? | Jenkins? |? Jmeter?
軟件測試方法匯總?|?Postman接口參數(shù)化?| 測試用例設(shè)計?|?安卓App抓包
視頻教程
Selenium?| Appium |?Jenkins |?Jmeter
往期推文:
Python 如何使用 HttpRunner 做接口自動化測試
為何Android 7.0 以上Charles和Fiddler無法抓取HTTPS包?
AWS與Docker
如何使用AWS EC2+Docker+JMeter構(gòu)建分布式負載測試基礎(chǔ)架構(gòu)
Docker容器數(shù)據(jù)持久化和容器網(wǎng)橋連接
Docker刪除image和container
Docker與VM虛擬機的區(qū)別以及Docker的特點
END
覺得不錯,可以“點贊”和“在看”,或者轉(zhuǎn)發(fā)、留言
精彩的內(nèi)容要和朋友分享哦
