利用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

相关文章
相关标签/搜索