要寫出一個健壯的程序必需要有測試,測試能夠保證上線的代碼功能符合預期,防止上線後出現莫須有的損失。對於咱們一口氣寫完的api,匆忙上線每每會致使很糟糕的後果。git
那麼怎麼去寫測試來保證咱們的api上線後是沒問題且符合預期的呢?一個後臺工程師爲了避免背鍋,如何去須要保證本身的工做完成得沒問題呢?github
注意:咱們這裏討論的是api符合預期,對於客戶端ui顯示,不在咱們討論範圍內。sql
我以爲要作好api測試,至少有如下三點:數據庫
簡單的說就是,充分理解業務的狀況下,編寫出完整的測試案例集,而後經過測試案例集驗證了返回結果以及存儲數據的準確性。這就是保證api正確的核心。json
根據這樣的想法,因而編寫了一個測試框架 Guardian。Guardian 的使用很是簡單,你只須要把你的測試案例信息寫成固定的json格式,包括請求信息,預期響應信息,預期的數據信息。而後運行命令,guardian 就會幫你跑完全部測試案例,並驗證最終的結果返回輸出到終端中。api
使用如這個例子:數組
guardian --tests=./example/tests/entrance.json SUIT: users ================================================= 獲取用戶 Ok ------------------------------------------------- 響應比對 ✓️ 數據比對 ✓️ ================================================= 修改用戶 Ok ------------------------------------------------- 響應比對 ✓️ 數據比對 ✓️ ================================================= Ok SUIT: orders ================================================= 獲取訂單 Ok ------------------------------------------------- 響應比對 ✓️ 數據比對 ✓️ ================================================= 建立訂單 Ok ------------------------------------------------- 響應比對 ✓️ 數據比對 ✓️ ================================================= Ok
選項名 | 子選項名 | 描述 | 格式 | 是否必須 | 例子 |
---|---|---|---|---|---|
database | port | 端口 | 字符串 | 是 | 3306 |
user | 用戶 | 字符串 | 是 | root | |
password | 密碼 | 字符串 | 是 | root | |
charset | 字符集 | 字符串 | 是 | utf8 | |
host | 地址 | 字符串 | 是 | 127.0.0.1 | |
database | 數據庫名 | 字符串 | 是 | guardian | |
tables | 無 | 案例集 | 對象 | 是 | { "users": [ "users/get.json", "users/post.json" ], "orders": ["orders/get.json","orders/post.json"] } |
vars | 無 | 全局變量 | 對象 | 否 | { "host": "http://127.0.0.1:1235" } |
debug | 無 | 設置爲true則會 打印全部返回結果 與數據庫查詢結果 |
布爾 | 否 | false |
選項名 | 子選項名 | 描述 | 格式 | 是否必須 | 例子 |
---|---|---|---|---|---|
info | title | 標題 | 字符串 | 是 | 這是一個標題 |
description | 描述 | 字符串 | 是 | 這是一個描述 | |
concurrent | 無 | 併發數 | 整數 | 否 | 1 |
request | url | url | 字符串 | 是 | {{host}}/user |
method | 方法有:json, get, post, delete, options, formget, formpost | 字符串 | 是 | get | |
params | 參數 | 對象或數組 | 否 | {"id": 1} | |
header | 頭部 | 對象 | 否 | {"token": "1231313"} | |
response | body | 返回body數據,對象中能夠有 通配符,如"*",表示不匹配 |
字符串或對象 | 是 | 123 |
header | 頭部 | 對象 | 否 | {"token": "1231313"} | |
data | 無 | 驗證數據 | 數組 | 否 | [ { "sql": "select name from user where id = 1", "result": [{"name": "jack"}] } ] |
具體能夠參考:bash