接口測試教程 - xmysql 介紹

接口測試,是一種灰盒測試。

在進行接口測試過程中,我們經常需要通過數據庫對比檢查來判斷接口執(zhí)行的結果是否正確。

但是 Postman 并沒有提供數據庫的查詢。就無法通過 Postman 去連接數據庫驗證數據的正確性。

好在,有一款基于 node.js 的工具 Xmysql可以將數據庫的表數據轉換成 Restful API 接口,返回 JOSN 格式的數據結果。

重度聲明:此款工具僅能用于測試環(huán)境,因為這款工具會造成嚴重的數據安全問題。

不過測試本來就在測試環(huán)境,所以測試使用在一定的安全性意識前提下,是沒有太大問題的。

接下來,我們就來看看這款工具如何使用。

1. 安裝部署

1.1 安裝 Node.js

Xmysql 是基于 Node.js 開發(fā)的,需要安裝 Node.js 環(huán)境。Node.js 的安裝直接從 [node.js 中文網] 下載無腦安裝即可。

建議:不要隨便更改其安裝目錄。

安裝完成后,在命令行窗口輸入npm --version

1560319962765.png

npm是 Node.js 的包管理工具,用來安裝基于 Node.js 相關的軟件。

1.2 安裝Xmysql

在 Node.js 安裝好后,執(zhí)行如下命令;

npm install -g xmyql

-g 參數是指全局安裝,對當前操作系統(tǒng)所有用戶有效。

安裝好以后,輸入如下命令檢查是否安裝成功。

xmysql --version
xmysql 版本檢查

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 服務

服務器啟動成功后,我們就可以通過 http://172.31.18.163:3000 訪問,會展示所有的 1681 個 API 接口的地址:

所有的 API 接口列表

如果啟動服務后,數據庫的 Number of Tables數量為0,那么就是數據庫沒有連接成功:

xmsql 服務啟動失敗

遇到上圖的情況就根據提示信息檢查參數值,可通過 Ctrl+C 結束服務,修改參數后再重新啟動。

3. Xmysql API 介紹

3.1 常見 API

由 xmysql 提供最常用的一些 API。包括獲取整張表,獲取表中某行數據,修改某行數據,刪除某行數據等,也就是常見的增刪改查。這些操作的執(zhí)行都通過指定主鍵ID來完成。

3.1.1 獲取整張表所有數據

通過 GET 請求某一個表名,獲取整張表的數據。

GET /api/表名

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

這里查詢整張 ecs_users 表。

查詢整張表

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
查詢某行數據

3.1.3 創(chuàng)建一條數據

通過 POST 方法在對應的表中增加一條數據。

POST /api/表名(PUT也是創(chuàng)建)

這里使用 ecs_goods_type 表演示。該表結構如下:

ecs_goods_type 表結構

構造請求如下:

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

參數名與表字段名一致

創(chuàng)建數據

檢查數據庫結果,新增了一條 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
修改數據

3.1.5 統(tǒng)計表的行數

返回表的所有行的計數,也就是表有多少記錄。

GET /api/表名/count

GET http://172.31.18.163:3000/api/ecs_goods_type/count
統(tǒng)計表行數

3.1.6 刪除行

刪除指定的行。

DELETE /api/表名/id

刪除ecs_goods_type表中 ID 為 25 的行。

DELETE http://172.31.18.163:3000/api/ecs_goods_type/25
刪除行

3.1.7 根據外鍵查詢

根據父表中的 ID 查詢關聯的子表中的數據。

GET /api/parentTable/id/childTable

比如電商系統(tǒng)中,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
分組查詢

還有一種 ugroupby 接口,同樣是分組統(tǒng)計,只是返回的結果格式不一樣,對比一下。

GET http://172.31.18.163:3000/api/ecs_goods/groupby?_fields=goods_name
分組查詢2

更多內容,請看下期分解!

?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容