作者 | 咪咪
創(chuàng)新互聯(lián)-專業(yè)網(wǎng)站定制、快速模板網(wǎng)站建設、高性價比酉陽土家族苗族網(wǎng)站開發(fā)、企業(yè)建站全套包干低至880元,成熟完善的模板庫,直接使用。一站式酉陽土家族苗族網(wǎng)站制作公司更省心,省錢,快速模板網(wǎng)站建設找我們,業(yè)務覆蓋酉陽土家族苗族地區(qū)。費用合理售后完善,十多年實體公司更值得信賴。
wiremock-py 是基于 WireMock 實現(xiàn)的, 使用 Python 批量生成不同測試場景下不同HTTP API 的 mock 數(shù)據(jù), 然后作為 mock server 快速全面地對 API 進行測試。
在數(shù)瀾地產(chǎn)應用的前端測試中, 前端一般依賴于后端的數(shù)據(jù), 前端通過后端在網(wǎng)關(guān)上發(fā)布的 HTTP API 獲取數(shù)據(jù). 要對前端進行充分的測試, 理想的做法是, 等待后端部署完成, 并且在數(shù)據(jù)層直接輸入不同類型的數(shù)據(jù)源, 然后前端直接調(diào)用后端發(fā)布在網(wǎng)關(guān)上的 API 進行測試。
cdn.xitu.io/2019/7/18/16c03b5cfad2a16e?w=339&h=376&f=png&s=33802">
然而現(xiàn)實的情況是, 前端和后端的開發(fā)進度不完全一致, 如果前端先開發(fā)完成了, 必須要等后端對應的 API 開發(fā)完成后才能開始測試, 而且數(shù)據(jù)層的數(shù)據(jù)也不容易構(gòu)造。
為了解決這個問題, 網(wǎng)關(guān)平臺做了簡單的 mock 功能, 每個 API 可以填寫一個 mock數(shù)據(jù), 然后前端調(diào)用 API 時直接使用這個 mock數(shù)據(jù):
這種方式下, 網(wǎng)關(guān)充當了mock server:
但由于大家都使用同一個網(wǎng)關(guān), 一個 API 只能保存一份 mock 數(shù)據(jù), 所以有以下一些缺點:
不同的測試場景需要不同的 mock 數(shù)據(jù)來測試, 此時需要刪掉上個測試場景的 mock 數(shù)據(jù), 再創(chuàng)建新場景的 mock 數(shù)據(jù)才能進行測試
不能根據(jù)測試場景來按照一定的規(guī)則動態(tài)生成 API 對應的 mock 數(shù)據(jù)
wiremock-py 可以解決上述這些問題: wiremock-py 通過傳入不同的測試場景參數(shù)來生成不同的 mock 數(shù)據(jù), 同時不同測試場景下使用的 mock 數(shù)據(jù)可以保存起來; 生成 mock 數(shù)據(jù)時, wiremock-py 支持使用Python和js代碼來動態(tài)生成 mock 數(shù)據(jù)(也支持直接使用 json 數(shù)據(jù), 如果 mock 數(shù)據(jù)中的數(shù)據(jù)量很大, 人工手寫 mock 時的數(shù)據(jù)量會很大, 使用代碼生成則比較容易); 不同的測試人員使用各自自己的 mock server, 不會影響到其他測試人員的測試。
測試人員需要做的是: 確定哪些 API 需要進行 mock 以及不同測試場景下對應的 mock 規(guī)則是什么。
Java 1.8.0_144
Node v8.6.0
Python 3.4.3
快速開始
以貿(mào)數(shù)v1.1.0版本 測試環(huán)境為例演示使用 wiremock-py 對樓層客流分布和店鋪客流分布兩張圖分布在3種場景下的測試方法
先確定本地瀏覽器能過正常訪問 http://mall-data.com:9012
準備
克隆代碼
git clone http://git.dtwave-inc.com:30000/baomi.wbm/wiremock-py.git
安裝依賴
cd wiremock-py
pip install -r requirements.txt
npm install mockjs
生成目錄
python mock.py -g "demo"
? wiremock-py git:(master)? python mock.py -g "demo"
DEBUG:root:mockdir=, scene=, target=, proxy_port=5506, generate=demo, wiremock=False, rewrite=False
DEBUG:root:正在生成目錄 /Users/wangbaomi/autotest/wiremock-py/demo
DEBUG:root:創(chuàng)建目錄成功: demo
DEBUG:root:創(chuàng)建目錄成功: demo/js
DEBUG:root:創(chuàng)建目錄成功: demo/json
DEBUG:root:創(chuàng)建目錄成功: demo/python
DEBUG:root:創(chuàng)建目錄成功: demo/wiremock
DEBUG:root:創(chuàng)建文件成功: demo/mappings.json
DEBUG:root:生成目錄完成: /Users/wangbaomi/autotest/wiremock-py/demo
填寫 mappings.json、json、python、js 數(shù)據(jù)
mappings.json 中填寫內(nèi)容:
[
{
"response": {
"default": {
"proxyBaseUrl": "target"
}
},
"mapping_name": "request url not start with /api",
"request": {
"method": "ANY",
"urlPattern": "/(?!api).*"
}
},
{
"mapping_name": "樓層客流分布",
"request": {
"urlPattern": "/api/v1/mall_data/customer_flow/every_floor\\?(.*)",
"method": "POST"
},
"response": {
"default": {
"proxyBaseUrl": "target"
},
"測試場景1": {
"bodyFileName": {
"json": "樓層客流分布.json"
}
},
"測試場景2": {
"bodyFileName": {
"python": "樓層客流分布.py",
"python_args": "測試場景2"
}
},
"測試場景3": {
"bodyFileName": {
"js": "樓層客流分布.js"
}
}
}
},
{
"mapping_name": "店鋪客流分布",
"request": {
"urlPattern": "/api/v1/mall_data/customer_flow/every_shop\\?(.*)",
"method": "POST"
},
"response": {
"default": {
"proxyBaseUrl": "target"
},
"測試場景1": {
"bodyFileName": {
"js": "店鋪客流分布.js"
}
},
"測試場景2": {
"bodyFileName": {
"json": "店鋪客流分布.json"
}
},
"測試場景3": {
"bodyFileName": {
"python": "店鋪客流分布.py",
"python_args": "測試場景3"
}
}
}
}
]
js 文件夾中新建店鋪客流分布.js文件, 內(nèi)容為:
var r = {
"success": true,
"code": null,
"message": null,
"content": {
"meta": {},
"multi": {
"group": [
{
"id": "rank",
"name": "排名",
"value": [
1,
2,
3,
4
]
}
],
"result": [
{
"id": "the_shop",
"name": "店鋪",
"value": [
"店鋪1",
"店鋪2",
"店鋪3",
"第4個店鋪"
]
},
{
"id": "customer_count",
"name": "人數(shù)",
"value": [
10,
100,
1000,
3242
]
}
]
},
"single": []
}
};
console.log(JSON.stringify(r));
js 文件夾中新建樓層客流分布.js文件, 內(nèi)容為:
var r = {
"success": true,
"code": null,
"message": null,
"content": {"meta": {},
"multi": {
"group": [
{
"id": "the_floor",
"name": "樓層",
"value": [
"-1樓",
"1樓",
"2樓",
"3樓",
]
}
],
"result": [
{
"id": "customer_count",
"name": "人數(shù)",
"value": [
100,
1000,
5000,
567
]
}
]
},
"single": []
}
};
console.log(JSON.stringify(r));
json 文件夾中新建店鋪客流分布.json, 內(nèi)容為:
{
"success": true,
"code": null,
"message": null,
"content": {
"meta": {},
"multi": {
新聞標題:Mock工具wiremock-py
標題鏈接:http://jinyejixie.com/article42/ipicec.html
成都網(wǎng)站建設公司_創(chuàng)新互聯(lián),為您提供用戶體驗、品牌網(wǎng)站設計、手機網(wǎng)站建設、網(wǎng)站制作、網(wǎng)站建設、服務器托管
聲明:本網(wǎng)站發(fā)布的內(nèi)容(圖片、視頻和文字)以用戶投稿、用戶轉(zhuǎn)載內(nèi)容為主,如果涉及侵權(quán)請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網(wǎng)站立場,如需處理請聯(lián)系客服。電話:028-86922220;郵箱:631063699@qq.com。內(nèi)容未經(jīng)允許不得轉(zhuǎn)載,或轉(zhuǎn)載時需注明來源: 創(chuàng)新互聯(lián)