動手造輪 | 一款Bash 指令碼 +HTTP 請求工具 +JSON 解析工具組成的測試小工具
數人云開源一款容器管理工具Crane,Crane開發過程中,為了保證API的健壯性和穩定性, 數人云開發團隊自制了一套適合Crane API測試的小工具。它也適用於其他介面測試,小數發現很多朋友對它感興趣,就勤勞地搬運過來,希望能為大家提供一個參考和思路。
針對Crane團隊只向外輸出API的特點, 選擇測試工具是秉著以下原則的:
- 第一, 功能不要太複雜,學習曲線不能太陡, 功能夠用就行;
- 第二, 可程式設計要好, 最好不要有介面,程式設計師友好。
於是一款簡單的Bash指令碼+HTTP 請求工具+JSON解析工具組成的測試小工具雛形出現了。
下面給大家展現這款工具的構成
Bash指令碼: 測試工具的粘合劑, 不是Java也不是Python, 用Bash簡單易用,功能強大。 Httpie: 一款類似curl的http工具, 不過比curl簡單的多, 尤其是想發個JSON請求時候, 更簡單。 jq: jq是一款命令列解析JSON文字的工具, 支援非常多的語法解析構造重組JSON文字。
下面依次給大家介紹一下httpie和jq的基本用法
1. 例子說明如何使用httpie
httpie在terminal下的命令是http, 先來幾個簡單的例子給演示一下用法。
http get http://httpbin.org/get header:header-content
其中, http是命令, get是請求method, http://httpbin.org 是請求地址, httpbin是一個http的測試服務; 用冒號相連的引數代表著HTTP請求頭, 用等號連線為請求body中的JSON鍵和值。 httpie預設的請求為json請求, 所以不用過多指明,header已經加上了Content-Type:application/json。
http post http://httpbin.org/post header:header-content json-key=json-value
http支援很多命令列選項, 介紹一個有意思的是 --check-status, check-status是把http response的非200值設定成程式的exit code, 比如:
如上所示, 請求一個不存在的地址時候程式退出符號變成了4。 我們將大量使用這個feature來判斷返回值。
2. 例子說明如何使用jq
下面我們用幾個例子介紹一下jq的用法。
上圖演示如何提取一個json的key。
如何提取一個巢狀的key。
提取陣列中的元素。
篇幅關係我們不過多展示jq的高階功能, 除了基本的解析和構造以外,jq支援大量的filter, 如有興趣可參考https://stedolan.github.io/jq/ ... tions。
3. Crane測試工具的幾個場景
場景一: 我期望測試API的HTTP測試的返回狀態比如200, 404, 500
首先bash造了幾個基本的函式來輸出錯誤, 和判斷狀態
使用方法
場景二: 登入過程測試
更多的測試例子可參考https://github.com/Dataman-Clo ... _test 。
至此,一款可用的測試工具出爐了, 雖然簡單,不過功能恰到好處,非常適合我們的場景, 再也不怕API出錯發現不了了。 聰明的同事們把這工具配到了jenkins和單元測試一起執行, 出錯了還能得到郵件通知, 酷極了。
相關文章
- 『政善治』Postman工具 — 4、HTTP請求基礎組成部分介紹PostmanHTTP
- bats-Bash自動化測試工具BAT
- 測試網路效能的小工具
- Java Http Get Post 請求工具類JavaHTTP
- 自造輪子-一個http併發測試工具(http-little-toy)HTTP
- Jmeter做效能測試——HTTP請求JMeterHTTP
- http介面測試工具,cookie自動追加HTTPCookie
- go語言請求http介面示例 並解析jsonGoHTTPJSON
- 基於Dubbo的http自動測試工具分享HTTP
- Android測試Http網路請求。AndroidHTTP
- 介面測試(apipost、jmeter和python指令碼)——測試工具APIJMeterPython指令碼
- Go 單元測試之HTTP請求與API測試GoHTTPAPI
- Swift: 用Alamofire做http請求,用ObjectMapper解析JSONSwiftHTTPObjectAPPJSON
- Routinebot - 一款小巧的GUI自動化測試工具GUI
- 指令碼化HTTP 取得響應 指定請求指令碼HTTP
- 使用jMeter構造大量併發HTTP請求進行微服務效能測試JMeterHTTP微服務
- HTTP Slow Attack測試工具SlowHTTPTestHTTP
- java操作Oracle效能測試小工具(急!!!!)JavaOracle
- apache ab壓力測試工具-批次壓測指令碼Apache指令碼
- 效能測試——壓測工具locust——指令碼初步編寫指令碼
- unity3d c# http 請求json資料解析Unity3DC#HTTPJSON
- java 偽造http請求ip地址JavaHTTP
- [Http] 跨站請求偽造(CSRF)HTTP
- 開源一個製作小工具的小工具,順便求個 star
- 分享一個小工具 Boast:如何從服務端跟蹤所有 HTTP 請求,並方便回放?AST服務端HTTP
- 介面自動化測試框架--http請求的get、post方法的實現框架HTTP
- 記憶體洩漏測試小工具 - LeakDiag記憶體
- HTTP/FTP壓力測試工具siegeHTTPFTP
- json 組裝工具JSON
- 自己手寫的JS小工具JS
- 以前練手的小工具:遮蔽字加空格工具
- Java JSON組成和解析JavaJSON
- 使用 Bash shell 指令碼進行功能測試(轉)指令碼
- 常用的小工具程式碼
- AutoRunner介面自動化測試工具不能錄製指令碼的解決辦法(A)指令碼
- HttpClient請求工具類HTTPclient
- post 請求工具類
- C#模擬HTTP請求Post JSONC#HTTPJSON