利用guardian爲你的api應用寫測試

要寫出一個健壯的程序必需要有測試,測試能夠保證上線的代碼功能符合預期,防止上線後出現莫須有的損失。對於咱們一口氣寫完的api,匆忙上線每每會致使很糟糕的後果。git

那麼怎麼去寫測試來保證咱們的api上線後是沒問題且符合預期的呢?一個後臺工程師爲了避免背鍋,如何去須要保證本身的工做完成得沒問題呢?github

注意:咱們這裏討論的是api符合預期,對於客戶端ui顯示,不在咱們討論範圍內。sql

我以爲要作好api測試,至少有如下三點:數據庫

  1. 測試案例的返回結果符合預期
  2. 測試案例覆蓋了全部代碼條件
  3. 測試案例的結果數據符合預期

簡單的說就是,充分理解業務的狀況下,編寫出完整的測試案例集,而後經過測試案例集驗證了返回結果以及存儲數據的準確性。這就是保證api正確的核心。json

根據這樣的想法,因而編寫了一個測試框架 Guardian。Guardian 的使用很是簡單,你只須要把你的測試案例信息寫成固定的json格式,包括請求信息,預期響應信息,預期的數據信息。而後運行命令,guardian 就會幫你跑完全部測試案例,並驗證最終的結果返回輸出到終端中。api

使用如這個例子:數組

guardian --tests=./example/tests/entrance.json

SUIT:  users
=================================================
獲取用戶                                    Ok
-------------------------------------------------
響應比對                                    ✓️
數據比對                                    ✓️
=================================================
修改用戶                                    Ok
-------------------------------------------------
響應比對                                    ✓️
數據比對                                    ✓️
=================================================

Ok

SUIT:  orders
=================================================
獲取訂單                                    Ok
-------------------------------------------------
響應比對                                    ✓️
數據比對                                    ✓️
=================================================
建立訂單                                    Ok
-------------------------------------------------
響應比對                                    ✓️
數據比對                                    ✓️
=================================================

Ok

json文件格式

入口文件

選項名 子選項名 描述 格式 是否必須 例子
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

相關文章
相關標籤/搜索