一、背景

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

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

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

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

具体实现如下:

 

二、下载安装node.js

1、下载

nodejs下载地址:https://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。

 

四、操作数据库

连接成功后,我们就可以通过http://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、排序操作

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

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

标签:

postman接口自动化测试之利用node.js和xmysql连接、操作数据库的更多相关文章

  1. nodejs的调试debug

    目录简介开启nodejs的调试调试的安全性使用WebStorm进行nodejs调试使用Chrome devTools进行调试使用node-inspect来进行调试其他的debug客户端简介对于开发者来说,在开发应用程序的过程中,往往为了开发方便和解决bug需要借助于编程语言的调试功能。一般来说我们需......

  2. 在nodejs中创建child process

    目录简介child process异步创建进程同步创建进程在nodejs中创建child process简介nodejs的main event loop是单线程的,nodejs本身也维护着Worker Pool用来处理一些耗时的操作,我们还可以通过使用nodejs提供的worker_threads来......

  3. JS实现公告上线滚动效果

    本文实例为大家分享了JS实现公告上线滚动效果的具体代码,供大家参考,具体内容如下实现的效果如下,新闻公告上下滚动。代码:Document* {padding: 0;margin: 0;box-sizing: border-box;}.notice-news {width: 400px;height:......

  4. Node使用koa2实现一个简单JWT鉴权的方法

    JWT 简介什么是 JWT全称 JSON Web Token , 是目前最流行的跨域认证解决方案。基本的实现是服务端认证后,生成一个 JSON 对象,发回给用户。用户与服务端通信的时候,都要发回这个 JSON 对象。该 JSON 类似如下:{"姓名": "张三"......

  5. 使用V8和node轻松profile分析nodejs应用程序

    目录简介使用V8的内置profiler工具使用gm来build V8手动build V8生成profile文件分析生成的文件生成时间线图使用nodejs的profile工具简介我们使用nodejs写好了程序之后,要是想对该程序进行性能分析的话,就需要用到profile工具了。虽然有很多很方便和强大的......

  6. nodejs的错误处理过程记录

    本文以连接错误ECONNREFUSED为例,看看nodejs对错误处理的过程。 假设我们有以下代码1. const net = require('net'); 2. net.connect({port: 9999})如果本机上没有监听9999端口,那么我们会得到以下输出。1. events.......

  7. 深入理解nodejs的HTTP处理流程

    目录简介使用nodejs创建HTTP服务解构request处理Request Body处理异常解构response简介我们已经知道如何使用nodejs搭建一个HTTP服务,今天我们会详细的介绍nodejs中的HTTP处理流程,从而对nodejs的HTTP进行深入的理解。使用nodejs创建HTTP服......

  8. node.js常用内置模块一

    在使用内模块的时候需要先将所需的内置模块进行引入、OS模块在nodejs中OS模块提供了与操作系统相关的属性和方法// 导入OS内置模块,必须先进行导入,否则无法使用 const os = require("os") // 根据操作系统生成对应的换行符 console.log(o......

  9. Neo4j 导入 Nebula Graph 的实践总结

    主要介绍如何通过官方 ETL 工具 Exchange 将业务线上数据从 Neo4j 直接导入到 Nebula Graph 以及在导入过程中遇到的问题和优化方法。摘要: 主要介绍如何通过官方 ETL 工具 Exchange 将业务线上数据从 Neo4j 直接导入到 Nebula Graph 以及在导入......

  10. three.js cannon.js物理引擎之Heightfield

    今天郭先生说一说cannon.js物理引擎之Heightfield高度场,学过场论的朋友都知道物理学中把某个物理量在空间的一个区域内的分布称为场,高度场就是与高度相关的场,而cannon.js物理引擎的Heightfield的高度就是关于两个变量的函数,可以表达为HEIGHT(i,j)。当然知不知道......

随机推荐

  1. R语言字符串知识点总结及实例分析

    在R语言中的单引号或双引号对中写入的任何值都被视为字符串。 R语言存储的每个字符串都在双引号内,即使是使用单引号创建的依旧如此。在字符串构造中应用的规则在字符串的开头和结尾的引号应该是两个双引号或两个单引号。它们不能被混合。双引号可以插入到以单引号开头和结尾的字符串中。单引号可以插入以双引号开头和结......

  2. python中pyqtgraph知识点总结

    PyQtGraph是纯Python的,只是它底层调用的是PyQt,也就是Qt的Python封装,底层用C/C++语言开发的库,它是在PyQt的基础上开发的可视化控件,相较于老牌的绘制库,PyQtGraph在绘图速度上特别突出,保证绘图的美观性以及强大功能前提下,能够极高的效率去绘制图形,下面一起来详......

  3. 详解Android的四大应用程序组件

    Android的一个核心特性就是一个应用程序可作为其他应用程序中的元素,可为其他应用程序提供数据。例如,如果程序需要用某些控件来加载一些图片,另一个程序已经开发出了此项功能,且可供其他程序使用,就可以直接使用跨进程通信方式调用那个程序的功能,而不是自己再开发一个。为了实现这样的功能,Android系......

  4. Perl 的 Socket 客户端获取服务器时间

    #!/usr/local/bin/perl -Twrequire 5.6.0;use Socket;use FileHandle;use strict;my($remote, $port, @thataddr, $that,$them, $proto,@now,$hertime);print &qu......

  5. 如何改变R语言默认存储包的路径

    怎么更改R中包的存储路径呢?方法一可以在R里面用如下命令.libPaths("C:/Program Files/R/R-3.3.1/library")方法二在安装某一个包得时候用如下命令install.packages("thepackage",lib=&qu......

  6. java实现打印日历

    本文实例为大家分享了java实现打印日历的具体代码,供大家参考,具体内容如下效果图代码:/***需要实现的目标:根据输入的年月打印出本月的日历表*说明:1900年1月1日刚好是星期一,所以需要计算出从1900 年到当前年月的前一个月总*共经历了几天,然后根据每周七天,用总天数除以7取余数,此余数就是......

  7. Java异常处理场景中不同位置的返回值详细解析

    Java 异常处理中的返回值在不同位置不同场景下是有一些差别的,这里需要格外注意具体分以下两种场景:1 finally语句块没有return语句,即当代码执行到try或者catch语句块中的return语句时,相当于在本地保存了一份此时返回值的变量的值副本,然后按照try catch finally......

  8. Python实现微信表情包炸群

    Python实现微信表情包炸群# -*- coding = utf-8 -*- # @Time : 2021/1/26 15:19 # @Author : 陈良兴# @File : 微信表情包炸群.py# @Software : PyCharm# 运行程序 > 输入次数 > 回车 >......

  9. c# 实现网页加载后将页面截取为长图片

    背景最近再做一个需求,需要对网页生成预览图,如下图但是网页千千万,总不能一个个打开,截图吧;于是想着能不能使用代码来实现网页的截图。其实要实现这个功能,无非就是要么实现一个仿真浏览器,要么调用系统浏览器,再进行截图操作。代码实现1、启用线程Threadvoid startPrintScreen(Sc......

  10. 前端性能优化小纪

    天下武功,无坚不破,唯快不破。对前端而言,快意味着要求资源体量更小、数量更精简、内容更早呈现、交互更加人性化。当项目做到一定程度,就应该考虑性能的问题,前端的性能优化有诸多有迹可循的理论和方法,比如 Yahoo!性能军规、Google PageSpeed Insights Rules。我们团队一个比......