动手造轮 | 一款 Bash 脚本 +HTTP 请求工具 +JSON 解析工具组成的测试小工具

2016-11-03 12:04:53 +08:00
 dataman

数人云开源一款容器管理工具Crane, Crane 开发过程中,为了保证 API 的健壮性和稳定性, 数人云开发团队自制了一套适合 Crane API 测试的小工具。它也适用于其他接口测试,小数发现很多朋友对它感兴趣,就勤劳地搬运过来,希望能为大家提供一个参考和思路。

针对 Crane 团队只向外输出 API 的特点, 选择测试工具是秉着以下原则的:

于是一款简单的 Bash 脚本+HTTP 请求工具+JSON 解析工具组成的测试小工具雏形出现了。

下面给大家展现这款工具的构成

下面依次给大家介绍一下 httpie 和 jq 的基本用法

1. 例子说明如何使用 httpie

httpie 在 terminal 下的命令是 http , 先来几个简单的例子给演示一下用法。

http get http://httpbin.org/get header:header-content

其中, http 是命令, get 是请求 method , http://httpbin.org 是请求地址, httpbin 是一个 http 的测试服务; 用冒号相连的参数代表着 HTTP 请求头, 用等号连接为请求 body 中的 JSON 键和值。 httpie 默认的请求为 json 请求, 所以不用过多指明, header 已经加上了 Content-Type : application/json 。

http post http://httpbin.org/post header:header-content json-key=json-value

http 支持很多命令行选项, 介绍一个有意思的是 --check-status , check-status 是把 http response 的非 200 值设置成进程的 exit code , 比如:

如上所示, 请求一个不存在的地址时候进程退出符号变成了 4 。 我们将大量使用这个 feature 来判断返回值。

2. 例子说明如何使用

下面我们用几个例子介绍一下 jq 的用法。

上图演示如何提取一个 json 的 key 。

如何提取一个嵌套的 key 。

提取数组中的元素。

篇幅关系我们不过多展示 jq 的高级功能, 除了基本的解析和构造以外, jq 支持大量的 filter , 如有兴趣可参考 https://stedolan.github.io/jq/manual/#Builtinoperatorsandfunctions

3. Crane 测试工具的几个场景

场景一: 我期望测试 API 的 HTTP 测试的返回状态比如 200 , 404 , 500

首先 bash 造了几个基本的函数来输出错误, 和判断状态

使用方法

场景二: 登录过程测试

更多的测试例子可参考 https://github.com/Dataman-Cloud/crane/tree/master/api_test

至此,一款可用的测试工具出炉了, 虽然简单,不过功能恰到好处,非常适合我们的场景, 再也不怕 API 出错发现不了了。 聪明的同事们把这工具配到了 jenkins 和单元测试一起执行, 出错了还能得到邮件通知, 酷极了。

4026 次点击
所在节点    Docker
2 条回复
defunct9
2016-11-03 17:46:13 +08:00
图片的问题
knightdf
2016-11-04 20:07:22 +08:00
curl + jq 不就行了..

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/317691

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX