postman接口自动化测试之利用node.js和xmysql连接、操作数据库

一、背景

使用postman进行接口自动化测试时,除了要验证接口的返回,有时候还要同时验证数据库的数据,或者将接口返回的数据与数据库的数据做对比,检验数据的正确性。

有的时候还需要在执行自动化case之前,造一些测试数据,或者在跑完自动化之后,删除测试数据

所以,我们需要在postman里连接并操作数据库,才能实现真正的完全自动化

经查阅资料,可以通过安装node.jsxmysql实现Postman与数据库的连接,生成Rest API,对数据库的数据进行增删改查操作。

具体实现如下:

 

二、下载安装node.js

1、下载

nodejs下载地址://nodejs.org/en/

2、安装

 

 

 

 

这一步是选择安装哪些模块,默认是全部安装,对于新手来说建议全部安装。

 

npm package manager:表示npm包管理器

online documentation shortcuts:在线文档快捷方式

Add to PATH:添加node安装路径到环境变量

 

点开那个add path选项前面的+号,我们看到,会主动把NodeJS和NPM这两个模块的命令路径添加到系统路径里,对于我们来说就非常方便了。

点击next继续下一步,确认信息,点击Install开始安装,程序开始复制文件等一系列步骤。一直到安装完毕。

 

 

 

 

 

 

3、测试是否安装成功

 

 

node -v

 

 可以看到,已经安装成功。

 

 

三、连接数据库

1、安装用来连接数据库的xmysql插件

npm install -g xmysql

 

2、通过xmysql命令连接数据库

xmysql -h 主机ip -u 用户名-p 密码 -d 数据库名
注意:需要root账号才能连接,连接成功后,如下图:

 可以看到Database为sousou,表的数量为53。

 

四、操作数据库

连接成功后,我们就可以通过//localhost:3000/api/表名来操作数据库。

 

1、查询数据【GET】

其中,where参数是条件,不加where则是查询所有记录。

如下例子,是指查询【package】表中【id=11】的记录(【eq】代表数据库里的【=】,其他运算符见下文【数据库操作合集】):

http://localhost:3000/api/package?_where=(id,eq,11)

 

 

2、删除数据【DELETE】

其中,id是数据库中的记录的唯一标识。

如下例子,删除【banner】表中【id=155】的记录:

http://localhost:3000/api/banner/:id

 

 可以看出,一行受影响,证明已经删除成功。

 

另:

可以对结果加断言(检查点)进行校验,例如判断受影响行数为1。

//校验HTTP状态码为200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

var jsonData = pm.response.json();

//校验受影响行数为1
pm.test("affectedRows = 1", function () {
    pm.expect(jsonData.affectedRows).to.eql(1);
});

 

 

 

   可以在Test Results中看到,状态码及受影响行数的断言均通过。

点击查看详细加断言(检查点)的方式 

 

3、修改数据【PATCH】

其中,id是数据库中的记录的唯一标识,更新的数据以json的格式放在body里

如下例子是将【package】表中【id=11】的记录的【name】改为“测试修改”

http://localhost:3000/api/package/:id

通过结果response可以看出,有一行受影响,说明已经更新成功了,可根据自身情况设置响应的断言进行校验。

 

 

4、插入数据【POST】

插入记录的数据以json的格式放在body里。

如下例子,向【banner】表中添加一条记录:

http://localhost:3000/api/banner

 

可以看出,受影响行数为1,说明已经添加成功。 

 

五、数据库操作合集

1、请求方式

 
 

2、条件中的运算符

 
 

3、排序操作

 
 
更全面的详解请参考官方://github.com/o1lab/xmysql#api-overview
 
 

初入职场热爱分享的打工人一枚,请大家多多指教~~