接口测试教程 - xmysql 介绍

接口测试,是一种灰盒测试。

在进行接口测试过程中,我们经常需要通过数据库对比检查来判断接口执行的结果是否正确。

但是 Postman 并没有提供数据库的查询。就无法通过 Postman 去连接数据库验证数据的正确性。

好在,有一款基于 node.js 的工具 Xmysql可以将数据库的表数据转换成 Restful API 接口,返回 JOSN 格式的数据结果。

重度声明:此款工具仅能用于测试环境,因为这款工具会造成严重的数据安全问题。

不过测试本来就在测试环境,所以测试使用在一定的安全性意识前提下,是没有太大问题的。

接下来,我们就来看看这款工具如何使用。

1. 安装部署

1.1 安装 Node.js
Xmysql 是基于 Node.js 开发的,需要安装 Node.js 环境。Node.js 的安装直接从 [node.js 中文网] 下载无脑安装即可。

建议:不要随便更改其安装目录。

安装完成后,在命令行窗口输入npm --version
在这里插入图片描述
npm是 Node.js 的包管理工具,用来安装基于 Node.js 相关的软件。

1.2 安装Xmysql

在 Node.js 安装好后,执行如下命令;

npm install -g xmyql

-g 参数是指全局安装,对当前操作系统所有用户有效。

安装好以后,输入如下命令检查是否安装成功。

xmysql --version

在这里插入图片描述

2. Xmysql 基本使用

xmysql 安装好以后,就可以直接在命令行启动 xmysql 服务。启动命令如下:

xmysql -h localhost -u root -p root -r 172.31.18.163 -d ecshop2

参数说明:

-h localhost:指定数据库服务器所在的 IP 地址;

-u root:指定访问数据库的账号(注意,直接使用 root 账号极度危险);

-p root:指定访问数据库的密码,与上面的账号配套;

-r 172.31.18.163:指定访问的 API 的 IP,这样可以跨服务器访问,否则只能使用 localhost 和 127.0.0.1 进行本机访问;

-d ecshop2:指定具体的数据库,这里的数据库名为 ecshop2。

服务启动后的界面如下,如果没有启动成功,请根据上面的参数逐一检查。我们可以看到 ecshop2 库一共有 88 张表,生成了 1681 个 API 接口。

接口测试教程 - xmysql 介绍_第1张图片

服务器启动成功后,我们就可以通过 http://172.31.18.163:3000 访问,会展示所有的 1681 个 API 接口的地址:

接口测试教程 - xmysql 介绍_第2张图片
如果启动服务后,数据库的 Number of Tables数量为0,那么就是数据库没有连接成功:
接口测试教程 - xmysql 介绍_第3张图片
xmsql 服务启动失败
遇到上图的情况就根据提示信息检查参数值,可通过 Ctrl+C 结束服务,修改参数后再重新启动。

3. Xmysql API 介绍

3.1 常见 API

由 xmysql 提供最常用的一些 API。包括获取整张表,获取表中某行数据,修改某行数据,删除某行数据等,也就是常见的增删改查。这些操作的执行都通过指定主键ID来完成。

3.1.1 获取整张表所有数据

通过 GET 请求某一个表名,获取整张表的数据。

GET /api/表名

GET http://172.31.18.163:3000/api/ecs_users

这里查询整张 ecs_users 表。
接口测试教程 - xmysql 介绍_第4张图片

3.1.2 查询某一行数据

通过在 URL 中指定某一行的主键,查询改行的数据。这里的 ecs_users 表的主键为 user_id。

注:这个方法和后面的方法 ID 都是直接使用该表的主键。比如 ecs_users 表的主键为 user_id, 那么这里的 ID 就是指 user_id, 比如 ecs_goods_type 表的主键为 cat_id ,那么这里的 ID 就是指 cat_id。

GET /api/表名/id

GET http://172.31.18.163:3000/api/ecs_users/2

接口测试教程 - xmysql 介绍_第5张图片

3.1.3 创建一条数据

通过 POST 方法在对应的表中增加一条数据。

POST /api/表名(PUT也是创建)

这里使用 ecs_goods_type 表演示。该表结构如下:
接口测试教程 - xmysql 介绍_第6张图片
构造请求如下:

POST http://172.31.18.163:3000/api/ecs_goods_type
PUT http://172.31.18.163:3000/api/ecs_goods_type

参数名与表字段名一致
接口测试教程 - xmysql 介绍_第7张图片
检查数据库结果,新增了一条 ID 为 25 的数据。
在这里插入图片描述

3.1.4 修改某行数据

依然以 ecs_goods_type 表为例,修改我们刚才添加的 ID 为 25 的数据。

PATCH /api/表名/id

PATCH http://172.31.18.163:3000/api/ecs_goods_type/25

接口测试教程 - xmysql 介绍_第8张图片

3.1.5 统计表的行数

返回表的所有行的计数,也就是表有多少记录。

GET /api/表名/count

GET http://172.31.18.163:3000/api/ecs_goods_type/count

接口测试教程 - xmysql 介绍_第9张图片

3.1.6 删除行

删除指定的行。

DELETE /api/表名/id

删除ecs_goods_type表中 ID 为 25 的行。

DELETE http://172.31.18.163:3000/api/ecs_goods_type/25

接口测试教程 - xmysql 介绍_第10张图片

3.1.7 根据外键查询

根据父表中的 ID 查询关联的子表中的数据。

GET /api/parentTable/id/childTable

比如电商系统中,ecs_order_info 为主表,ecs_order_goods为辅表。

通过订单信息表 ecs_order_info 中的订单 ID 查询ecs_order_goods订单详情表中的订单商品数据。

GET http://172.31.18.163:3000/api/ecs_order_info/5/ecs_order_goods

查询订单 ID 为 5 的订单商品数据。

由于我暂时没有找到有关联的表,所以无法贴上结果,请各位自行尝试。

3.1.8 分组查询

可以通过 groupby 接口进行分组查询,通过内置的参数_fields指定分组的字段。

GET /api/表名/groupby?_fields=分组的字段

如下示例查询ecs_goods表,指定通过 goods_name进行分组查询。

GET http://172.31.18.163:3000/api/ecs_goods/groupby?_fields=goods_name

接口测试教程 - xmysql 介绍_第11张图片
还有一种 ugroupby 接口,同样是分组统计,只是返回的结果格式不一样,对比一下。

GET http://172.31.18.163:3000/api/ecs_goods/groupby?_fields=goods_name

接口测试教程 - xmysql 介绍_第12张图片

你可能感兴趣的:(PostMan,接口测试)