什么是mock server
mock:英文可以翻譯為模仿的,mock server是我們用來解除依賴(耦合),假裝實現(xiàn)的技術(shù),比如說,前端需要使用某些api進(jìn)行調(diào)試,但是服務(wù)端并沒有開發(fā)完成這些api,那么前端的工作就被服務(wù)端阻塞了,那么就可以使用mock server假裝實現(xiàn)這些api,能夠返回特定的數(shù)據(jù),幫助前端進(jìn)行頁面渲染,當(dāng)然我們?yōu)榱朔奖憧梢孕枰c服務(wù)端進(jìn)行約定,約定接口的內(nèi)容是什么。
restful接口規(guī)范
轉(zhuǎn)接阮一峰老師的博客—RESTful API 設(shè)計指南:http://www.ruanyifeng.com/blog/2014/05/restful_api.html
Moco-約定uri(一)
moco工具是在github開源的一個項目,可以使用moco工具搭一個簡單的mock server方便我們進(jìn)行調(diào)試,github地址:https://github.com/dreamhead/moco,下載下來的是一個jar包,目前的版本是0.11.1,首先我們要編寫一個config文件,把我們需要“模擬”的請求和響應(yīng)寫入這個配置文件,配置文件是json格式的,接下來我們寫一個比較簡單的請求,訪問 localhost:12306/hello 接口,返回一個純文本“moco”,moco工具約定了12306端口,不必糾結(jié),就跟tomcat約定8080端口類似,config.json文件如下,而且json文件要與moco的jar包放在同一個文件夾下。比如博主的目錄結(jié)構(gòu):
[
{
"request":
{
"uri":"/hello"
},
"response":
{
"text":"moco"
}
}
]
配置文件比較簡單,我們請求接口,返回一個純文本,啟動指令:
>java -jar moco-runner-0.11.1-standalone.jar http -p 12306 -c config.json
這里的http就是http協(xié)議, -p 12306 綁定端口號12306, -c config.json讀config文件
看到以上的表現(xiàn),就說明moco已經(jīng)順利啟動了,我們訪問localhost:12306/hello 看到結(jié)果如下就說明mock server順利返回了我們約定的數(shù)據(jù)”moco”
Moco-約定uri(二)
修改config文件如下,注意這里moco工具能實時監(jiān)測到j(luò)son配置文件的變化,并自行重啟server
[
{
"request":
{
"uri":"/"
},
"response":
{
"text":"welcome to Moco"
}
},
{
"request":
{
"uri":"/hello"
},
"response":
{
"text":"moco"
}
}
]
?接下來分別訪問localhost:12306和12306:12306/hello,結(jié)果如下:
Moco-約定get請求
[
{
"request":
{
"method":"get",
"uri":"/get"
},
"response":
{
"text":"moco get"
}
}
]
?Moco-約定post請求
[
{
"request":
{
"method":"post",
"uri":"/post"
},
"response":
{
"text":"moco post"
}
}
]
Moco-約定請求參數(shù)
[
{
"request":
{
"method":"get",
"uri":"/get",
"queries":
{
"id":"12306",
"name":"moco"
}
},
"response":
{
"text":"moco queries"
}
}
]
Moco-約定請求body必須為json格式
[
{
"request":
{
"method":"post",
"uri":"/post",
"text":
{
"json":"{\"id\":\"12306\",\"name\":\"moco\"}"
}
},
"response":
{
"status":"200"
}
}
]
?Moco-約定請求頭部
[
{
"request":
{
"method":"post",
"uri":"/post",
"headers":
{
"content-type":"application/json",
"Connection":"keep-alive",
"Content-Encoding":"gzip"
}
},
"response":
{
"status":"200"
}
}
]
Moco-約定返回內(nèi)容
前面已經(jīng)看到了response的集中返回內(nèi)容如text,和status,下面展示一下返回文件和設(shè)置文件格式等
[
{
"request":
{
"method":"post",
"uri":"/post",
},
"response":
{
"file":"data.js",
"charset":"GBK",
"version":"HTTP/1.0"
}
}
]
Moco-約定返回狀態(tài)碼
見上述的幾個json,里面已經(jīng)包含了返回狀態(tài)碼的使用方式
Moco-在單元測試中的使用(以Python為例)
[
{
"request":
{
"method":"get",
"uri":"/api/hello"
},
"response":
{
"text":"hello Savitar!",
"status":200
}
}
]
這里模擬一個get請求,返回純文本“hello Savitar!”和狀態(tài)碼200,先在瀏覽器訪問localhost:12306/api/hello 結(jié)果如下圖:
說明接口返回沒問題,接下來使用Python requests+unittest寫一個簡單的接口測試用例
#coding=utf-8
'''
@author=Savitar
'''
import unittest
import requests
class MocoTestApi(unittest.TestCase):
def setUp(self):
self.url = "http://localhost:12306"
def test_moco_test_api(self):
api = "/api/hello"
url = self.url+api
r = requests.get(url)
self.assertEqual(r.status_code,200)
self.assertEqual(r.text,"hello Savitar!")
def tearDown(self):
pass
if __name__ == '__main__':
unittest.main()
?運行結(jié)果如下:
上述代碼實現(xiàn)了訪問接口,并通過斷言返回的狀態(tài)碼和返回內(nèi)容,斷言成功,說明接口測試通過
最后感謝每一個認(rèn)真閱讀我文章的人,禮尚往來總是要有的,雖然不是什么很值錢的東西,如果你用得到的話可以直接拿走:
軟件測試面試小程序
被百萬人刷爆的軟件測試題庫!?。≌l用誰知道?。?!全網(wǎng)最全面試刷題小程序,手機(jī)就可以刷題,地鐵上公交上,卷起來!
涵蓋以下這些面試題板塊:
1、軟件測試基礎(chǔ)理論 ,2、web,app,接口功能測試 ,3、網(wǎng)絡(luò) ,4、數(shù)據(jù)庫?,5、linux
6、web,app,接口自動化 ,7、性能測試?,8、編程基礎(chǔ),9、hr面試題 ,10、開放性測試題,11、安全測試,12、計算機(jī)基礎(chǔ)
文章來源:http://www.zghlxwxcb.cn/news/detail-678937.html
這些資料,對于【軟件測試】的朋友來說應(yīng)該是最全面最完整的備戰(zhàn)倉庫,這個倉庫也陪伴上萬個測試工程師們走過最艱難的路程,希望也能幫助到你!?????文章來源地址http://www.zghlxwxcb.cn/news/detail-678937.html
到了這里,關(guān)于接口自動化測試:mock server之Moco工具的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!