摘要:要写出一个健壮的程序必须要有测试,测试可以保证上线的代码功能符合预期,防止上线后出现莫须有的损失。根据这样的想法,于是编写了一个测试框架。的使用非常简单,你只需要把你的测试案例信息写成固定的格式,包括请求信息,预期响应信息,预期的数据信息。
要写出一个健壮的程序必须要有测试,测试可以保证上线的代码功能符合预期,防止上线后出现莫须有的损失。对于我们一口气写完的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 ------------------------------------------------- 响应比对 ✓️ 数据比对 ✓️ ================================================= Okjson文件格式 入口文件
选项名 | 子选项名 | 描述 | 格式 | 是否必须 | 例子 |
---|---|---|---|---|---|
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
摘要:项目地址测试有几个方面,一个是的响应,一个是持久数据库与内存数据库数据的准确性。为了方便测试驱动开发,于是写了一个这个测试框架。现在还在持续改进开发中,欢迎,欢迎提意见 项目地址:https://github.com/chenhg5/gu... 测试api有几个方面,一个是api的响应,一个是持久数据库与内存数据库数据的准确性。编写测试代码是很繁琐的,现在先进的测试方式就是表格测试,即...
摘要:在基础设施方面,向公共云转移的好处是显而易见的更好地利用基础设施投资,结束企业周期性硬件需求的诅咒。正如的例子所示,为了有效地迁移到云平台,企业需要进行文化变革,然后通过接受云计算来加速变革。通过将工作负载从私有数据中心转移到公共云中,云计算不是解决的技术问题。正如云计算专家Bernard Golden所说,组织真正利用云计算需要的是对其IT方法进行全面反思。然而即使这个声明虽然可能很大胆,...
摘要:原文地址加密经济机制原则现有的链下解决方案的加密经济机制,通常会遭受到一些批评。状态守护网络代币的另一个重要的价值体现在,通过创新的保险模型和简单的交互,实现高效的流动性效率和安全的去中心化的可用的监护。 原文地址:https://medium.com/@CelerNetw... 加密经济机制原则 现有的链下解决方案的加密经济机制,通常会遭受到一些批评。因为这些项目发行的代币除了充当支...
摘要:对于每个案例,我们插入所需要的测试数据,调用需要测试的函数并对结果作出断言。我们将这个套接字和用户返回以供我们其他的测试使用。 原文地址:Elixir, Phoenix, Absinthe, GraphQL, React, and Apollo: an absurdly deep dive - Part 2 原文作者:Zach Schneider 译文出自:掘金翻译计划 本文永久链接:gi...
摘要:通常,这种模式是通过定义一个代表处理对象的抽象类来实现的,在抽象类中会定义一个字段来记录后续对象。工厂模式使用表达式第章中,我们已经知道可以像引用方法一样引用构造函数。 一、为改善可读性和灵活性重构代码 1.改善代码的可读性 Java 8的新特性也可以帮助提升代码的可读性: 使用Java 8,你可以减少冗长的代码,让代码更易于理解 通过方法引用和Stream API,你的代码会变得更...
阅读 1183·2021-09-30 09:47
阅读 3718·2021-09-06 15:02
阅读 1734·2021-09-01 10:46
阅读 2313·2019-08-30 15:52
阅读 535·2019-08-29 15:28
阅读 1822·2019-08-29 15:08
阅读 1108·2019-08-29 13:28
阅读 2516·2019-08-29 12:19