资讯专栏INFORMATION COLUMN

利用guardian为你的api应用写测试

JellyBool / 392人阅读

摘要:要写出一个健壮的程序必须要有测试,测试可以保证上线的代码功能符合预期,防止上线后出现莫须有的损失。根据这样的想法,于是编写了一个测试框架。的使用非常简单,你只需要把你的测试案例信息写成固定的格式,包括请求信息,预期响应信息,预期的数据信息。

要写出一个健壮的程序必须要有测试,测试可以保证上线的代码功能符合预期,防止上线后出现莫须有的损失。对于我们一口气写完的api,匆忙上线往往会导致很糟糕的后果。

那么怎么去写测试来保证我们的api上线后是没问题且符合预期的呢?一个后台工程师为了不背锅,如何去需要保证自己的工作完成得没问题呢?

注意:我们这里讨论的是api符合预期,对于客户端ui显示,不在我们讨论范围内。

我觉得要做好api测试,至少有以下三点:

测试案例的返回结果符合预期

测试案例覆盖了所有代码条件

测试案例的结果数据符合预期

简单的说就是,充分理解业务的情况下,编写出完整的测试案例集,然后通过测试案例集验证了返回结果以及存储数据的准确性。这就是保证api正确的核心。

根据这样的想法,于是编写了一个测试框架 Guardian。Guardian 的使用非常简单,你只需要把你的测试案例信息写成固定的json格式,包括请求信息,预期响应信息,预期的数据信息。然后运行命令,guardian 就会帮你跑完所有测试案例,并验证最终的结果返回输出到终端中。

使用如这个例子:

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"}]
}
]

具体可以参考:

入口json

测试案例json

文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。

转载请注明本文地址:https://www.ucloud.cn/yun/8864.html

相关文章

  • api测试框架 Guardian

    摘要:项目地址测试有几个方面,一个是的响应,一个是持久数据库与内存数据库数据的准确性。为了方便测试驱动开发,于是写了一个这个测试框架。现在还在持续改进开发中,欢迎,欢迎提意见 项目地址:https://github.com/chenhg5/gu... 测试api有几个方面,一个是api的响应,一个是持久数据库与内存数据库数据的准确性。编写测试代码是很繁琐的,现在先进的测试方式就是表格测试,即...

    Hancock_Xu 评论0 收藏0
  • 云计算加速变革企业IT

    摘要:在基础设施方面,向公共云转移的好处是显而易见的更好地利用基础设施投资,结束企业周期性硬件需求的诅咒。正如的例子所示,为了有效地迁移到云平台,企业需要进行文化变革,然后通过接受云计算来加速变革。通过将工作负载从私有数据中心转移到公共云中,云计算不是解决的技术问题。正如云计算专家Bernard Golden所说,组织真正利用云计算需要的是对其IT方法进行全面反思。然而即使这个声明虽然可能很大胆,...

    赵连江 评论0 收藏0
  • Celer Network 链下加密经济机制

    摘要:原文地址加密经济机制原则现有的链下解决方案的加密经济机制,通常会遭受到一些批评。状态守护网络代币的另一个重要的价值体现在,通过创新的保险模型和简单的交互,实现高效的流动性效率和安全的去中心化的可用的监护。 原文地址:https://medium.com/@CelerNetw... 加密经济机制原则 现有的链下解决方案的加密经济机制,通常会遭受到一些批评。因为这些项目发行的代币除了充当支...

    骞讳护 评论0 收藏0
  • [译] Elixir、Phoenix、Absinthe、GraphQL、React 和 Apollo

    摘要:对于每个案例,我们插入所需要的测试数据,调用需要测试的函数并对结果作出断言。我们将这个套接字和用户返回以供我们其他的测试使用。 原文地址:Elixir, Phoenix, Absinthe, GraphQL, React, and Apollo: an absurdly deep dive - Part 2 原文作者:Zach Schneider 译文出自:掘金翻译计划 本文永久链接:gi...

    Cympros 评论0 收藏0
  • 《java 8 实战》读书笔记 -第八章 重构、测试和调试

    摘要:通常,这种模式是通过定义一个代表处理对象的抽象类来实现的,在抽象类中会定义一个字段来记录后续对象。工厂模式使用表达式第章中,我们已经知道可以像引用方法一样引用构造函数。 一、为改善可读性和灵活性重构代码 1.改善代码的可读性 Java 8的新特性也可以帮助提升代码的可读性: 使用Java 8,你可以减少冗长的代码,让代码更易于理解 通过方法引用和Stream API,你的代码会变得更...

    gclove 评论0 收藏0

发表评论

0条评论

最新活动
阅读需要支付1元查看
<