wiremock使用入門

wiremock 簡介

WireMock是一個開源的測試工具,支持HTTP響應存根、請求驗證、代理/攔截、記錄和回放。最直接的用法:git

  • 爲Web/移動應用構建Mock Service
  • 快速建立Web API原型
  • 模擬Web Service中錯誤返回
  • 錄製HTTP請求和回放

生成mock API的方式

生成mock api有兩種方式:一種是新建mapping文件,另外一種是經過wiremock的api. 其中第一種能夠永久保存下來,第二種是暫時生成API,待下次build container後,會被清除. 下面詳細介紹一下兩種方式:shell

新建Mapping文件生成mock API

一個Mock的api對應一個json文件,放在mapping/下,文件格式以下:json

{
"request": {
"url": "/QueryPWIDByLoginname",
"method": "POST",
"bodyPatterns": [
{
"equalToJson": "{ \"loginName\":\"17317920860\"}",
"ignoreArrayOrder": true,
"ignoreExtraElements": true
}
]
},
"response": {
"status": 200,
"body": "{\"code\":\"0\",\"data\":{\"AccountID\":\"\",\"LoginNameType\":\"2\",\"LoginStatus\":\"1\",\"PWID\":\"300111000156276629\",\"PWIDType\":\"wanda\",\"Status\":\"1\",\"SysFrom\":\"wandacloud\"},\"msg\":\"success\"}",
"headers": {
"Content-Type": "application/json; charset=utf-8",
"Date": "Fri, 18 Aug 2017 07:05:05 GMT"
}
}
}

mapping文件能夠手動寫,也能夠經過wiremock的record功能生成.api

record 功能生成mapping

wiremock Server提供了record UI, 訪問地址: http://10.214.169.111:31703/__admin/recorder/
下面以登陸註冊模塊QueryPWIDByLoginname功能爲例,打開record UI, 須要mock的URL填入,http://10.214.169.111:30303,點擊 Record按鈕. 以後發向http://10.214.169.111:30303的請求,能夠用http://10.214.169.111:31703來代理例如,應發送請求:
訪問:瀏覽器

curl -X POST "http://10.214.169.111:31703/QueryPWIDByLoginname" -H "accept: application/vnd.response+json" -H "content-type: application/json" -d "{ \"loginName\": \"17317920860\"}"

返回:app

{"code":"0","data":{"AccountID":"","LoginNameType":"2","LoginStatus":"1","PWID":"300111000156276629","PWIDType":"wanda","Status":"1","SysFrom":"wandacloud"},"msg":"success"}

點擊Stop按鈕,結果以下:
圖片描述curl

2.調用wiremock的api獲取錄製內容:使用curl/瀏覽器等方式獲取:http://10.214.169.111:31703/__admin/mappings工具

3.將request和response部分拷貝到一個mapping目錄下的一個新json文件, 上傳git,完成.測試

使用wiremock admin rest api生成mock API

/__admin/mappings
POST http://10.214.169.111:31703/__admin/mappings
body:ui

{
"request": {
"method": "GET",
"url": "/fromAPI"
},
"response": {
"status": 200,
"body": "Hello world - API!",
"headers": {
"Content-Type": "text/plain"
}
}
}

圖片描述

相關文章
相關標籤/搜索