mb概述
安裝好mb以后,直接通過(guò)mb命令啟動(dòng)服務(wù)辙培,默認(rèn)端口是2525蕾额,瀏覽器輸入(http://localhost:2525) 訪問(wèn)試試看娜谊!
在RHEL7和Centos7下可以設(shè)定后臺(tái)服務(wù)自動(dòng)啟動(dòng),配置的方法可以在這里配置方法獲得恬叹,在這里不多擴(kuò)展候生。
本人喜歡寫(xiě)段shell腳本來(lái)啟動(dòng)、停止mb服務(wù)妄呕,詳情見(jiàn)后面陶舞。
-
mb命令啟動(dòng)常用參數(shù)
選項(xiàng) | 描述 | 默認(rèn) |
---|---|---|
--command | start,stop绪励,restart肿孵, replay(刪除代理,轉(zhuǎn)化為代理捕獲的響應(yīng)值疏魏,后面代理詳解) | start |
--port 2525 | 指定mb運(yùn)行的端口好停做,默認(rèn)是2525 | 2525 |
--configfile imposters.ejs | mountebank將加載指定的模板文件,為了方便管理會(huì)把配置存儲(chǔ)在EJS模板中大莫。后面詳細(xì)說(shuō)明蛉腌。 | N/A |
--logfile mb.log | mountebank用于存儲(chǔ)日志的文件 | mb.log |
--loglevel debug | 日志級(jí)別 debug, info, warn, error | info |
--allowInjection | 是否允許腳本注入,mb支持針對(duì)謂詞只厘, 存根響應(yīng)烙丛,行為裝飾, 等待行為函數(shù)和 tcp請(qǐng)求解析的 JavaScript注入羔味,但默認(rèn)情況下禁用它們河咽。 | false |
--localOnly | 請(qǐng)求隔離,僅接受來(lái)自localhost的請(qǐng)求 | false |
--ipWhitelist | 白名單環(huán)境隔離 | 所有IP地址 |
--pidfile | 為stop命令存儲(chǔ)pid的文件 | mb.pid |
-
常用術(shù)語(yǔ)
- 冒名頂替者(imposter)
從社會(huì)角度來(lái)說(shuō)他就是一個(gè)詐騙團(tuán)伙赋元,里面會(huì)有很多的騙子忘蟹。
從技術(shù)角度來(lái)說(shuō)imposter就是一個(gè)服務(wù)或系統(tǒng)騙子飒房,他有端口、協(xié)議提供測(cè)試的服務(wù)媚值,可以根據(jù)測(cè)試需要?jiǎng)?chuàng)建多個(gè)imposter狠毯。- 存根(stub)
用于為imposter生成響應(yīng)的一組配置。一個(gè)imposter可以具有0個(gè)或多個(gè)stub褥芒。
從社會(huì)角度來(lái)說(shuō)就是騙子公司的一個(gè)部門(mén)或產(chǎn)品線嚼松。
從技術(shù)角度來(lái)說(shuō)stub就是提供一個(gè)服務(wù)的響應(yīng),一個(gè)請(qǐng)求的地址喂很。
- 謂詞(predicate)
配置響應(yīng)stub的條件惜颇。每個(gè)stub可以有0個(gè)或更多predicate。
從社會(huì)角度來(lái)說(shuō)就是要找相應(yīng)的人做相應(yīng)的事少辣。
從技術(shù)角度來(lái)說(shuō)predicate就是根據(jù)條件做相應(yīng)的功能凌摄,返回對(duì)應(yīng)的數(shù)據(jù)。
- 響應(yīng)(response)
產(chǎn)生響應(yīng)數(shù)據(jù)漓帅。每個(gè)stub可以有0個(gè)或更多響應(yīng)锨亏。
- 響應(yīng)類型(response type)
每個(gè)stub響應(yīng)由定義響應(yīng)行為的特定響應(yīng)類型定義。目前支持的響應(yīng)類型是:is忙干,proxy器予,inject。
is是默認(rèn)的類型捐迫,就是一般的應(yīng)答輸出乾翔。
proxy是代理響應(yīng)類型,它允許記錄重放行為施戴。
inject允許您注入JavaScript函數(shù)以創(chuàng)建響應(yīng)對(duì)象反浓。
- 存根行為(stub behavior)
向響應(yīng)添加其他的自定義處理,如可以后面通過(guò)shell腳本執(zhí)行nodejs來(lái)獲取動(dòng)態(tài)的數(shù)據(jù)赞哗。
如果對(duì)上面的概念還不明白雷则,沒(méi)有關(guān)系,后面就讓代碼給你解釋肪笋。
-
代碼說(shuō)明一切
前面對(duì)于他的結(jié)構(gòu)說(shuō)明了一番月劈,不懂得沒(méi)有關(guān)系,我們go on藤乙!
下面就是一個(gè)imposter猜揪,其實(shí)他就是一個(gè)json格式的文件,為了方便說(shuō)明我在json里面加了注釋(懂技術(shù)的人都會(huì)明白坛梁,這樣會(huì)死的很慘J摇)。
{
"port": 8081,<!-- 端口號(hào) -->
"protocol": "http",<!-- 通訊協(xié)議 -->
"stubs": [
{
"predicates": [
{
"equals": {
"method": "POST",<!-- 提交方式 -->
"path": "/customers/123"<!-- 訪問(wèn)地址 -->
}
}
],
"responses": [<!-- 響應(yīng)數(shù)據(jù) -->
{
"is": {
"statusCode": 200,
"headers": {
"Server": "Apache-Coyote/1.1",
"Access-Control-Allow-Origin": "*",
"Content-Type": "text/json;charset=UTF-8",
"Content-Length": 298,
"Date": "Tue, 05 Sep 2017 06:49:14 GMT",
"Connection": "close"
},
"body": {
"head": {
"rspcode": "100",
"respMsg": "成功",
"serialNo": "d7af14e5-a99e-4881-9b1b-695b7a760a64"
},
"body": {
"code": "S4393493",
"startDate": "2019-04-09",
"level": "3",
"endDate": "2020-04-08"
}
}
},
"_behaviors": {
"shellTransform": ["node ./dcs/test.js"]<!-- 這里可以通過(guò)shell腳本執(zhí)行nodejs來(lái)修改body的數(shù)據(jù) -->
}
}
]
},
{
"responses": [
{
"is": { "statusCode": 404 }<!-- 地址不匹配情況 -->
}
]
}
]
}
正常訪問(wèn)的情況下返回結(jié)果為:
{
"head": {
"rspcode": "100",
"respMsg": "成功",
"serialNo": "d7af14e5-a99e-4881-9b1b-695b7a760a64"
},
"body": {
"code": "S4393493",
"startDate": "2019-04-09",
"level": "3",
"endDate": "2020-04-08"
}
}
是不是很簡(jiǎn)單罚勾?
系統(tǒng)測(cè)試?yán)髦畵醢鍖?shí)戰(zhàn)(一)
系統(tǒng)測(cè)試?yán)髦畵醢鍖?shí)戰(zhàn)(三)
系統(tǒng)測(cè)試?yán)髦畵醢鍖?shí)戰(zhàn)(四)
系統(tǒng)測(cè)試?yán)髦畵醢鍖?shí)戰(zhàn)(五)
系統(tǒng)測(cè)試?yán)髦畵醢鍖?shí)戰(zhàn)(六)
系統(tǒng)測(cè)試?yán)髦畵醢鍖?shí)戰(zhàn)終結(jié)(七)