PostMan连接mysql数据库并获取数据库数据(nodejs)

PostMan连接MySql数据库

        一、安装nodejs

        二、安装xmysql

        三、连接数据库

        四、获取数据库的相关信息的API

        五、关于Postman+xmysql+nodeJs的实践分享

一、安装nodejs

[下载地址] https://nodejs.org/en/
二、安装xmysql

命令行安装xmysql:npm install xmysql -g:
三、连接数据库

连接数据库的命令:xmysql -h localhost -u mysqlUser -p mysqlPassword -d databaseName
四、获取数据库的相关信息的API

调用http://localhost:3000获取数据库的相关信息

图片1:

图片2:

图片3:

 

 

在postman中获取数据库数据

在postman中获取数据库数据

公司用的是mysql数据库,本想看看postman能不能连接数据库,搜了半天好像是没办法,那有时候我们的测试又需要拿接口返回值与数据库中的值进行比对,怎么办,在网上看到了一个方法,对数据库实现restful API,以http request的方式获取数据库中的数据,http request不就是postman在做的吗,搞起。

下载nodejs,安装xmysql,或者另外有一个mysql-to-rest,nodejs这块就不多讲,我也才刚拿来耍,网上资料很多。
mysql-to-rest看教程还需要node安装express和mysql,再写个连接的js文件,再执行,博主实现了,但是感觉略麻烦。
xmysql就比较直接



命令设好数据库连接信息,几秒就生成了

postman发送http请求,拿到API


获取了aaaa表的数据,搞定
数据库数据已经到手,剩下的就是在tests中用js代码进行操作了就不写了,可以单独去了解xmysql的文档。
至此,从文件获取数据,发送请求,响应断言,流程化,数据库数据获取都已实现了

nodejs连接mysql实例

1、在工程目录下运行npm install mysql安装用于nodejs的mysql模块;

2、创建db.js模块用于连接mysql,同时定义query查询方法;

var mysql = require('mysql');

// 创建一个数据库连接池
var pool = mysql.createPool({
  connectionLimit: 50,
  host: 'localhost',
  user: 'admin',
  password: '123456',
  database: 'rp-test'
});

// SELECT * FROM users
// 让我们的方法支持两种模式
// 一种是只传入SQL语句和回调函数
// 一种是传入SQL语句、参数数据、回调函数

exports.query = function (sql, P, C) {
  var params = [];
  var callback;

  // 如果用户传入了两个参数,就是SQL和callback
  if (arguments.length == 2 && typeof arguments[1] == 'function') {
    callback = P;
  } else if (arguments.length == 3 && Array.isArray(arguments[1]) && typeof arguments[2] == 'function') {
    params = P;
    callback = C;
  } else {
    throw new Error('对不起,参数个数不匹配或者参数类型错误');
  }


  // 如果用户传入了三个参数,那么就是SQL和参数数组、回调函数


  // 从池子里面拿一个可以使用的连接
  pool.getConnection(function (err, connection) {
    // Use the connection
    connection.query(sql, params, function () {
      // 使用完毕之后,将该连接释放回连接池
      connection.release();
      callback.apply(null, arguments);
    });
  });
};

3、查询示例

var express = require('express');
var db = require('./db');
var router = express.Router();

router.get('/',function(req, res, next){
    db.query("select * from app",function(err,result){
         //console.log(result);
        res.send(JSON.stringify (result));
    });
});
module.exports=router;

关于Postman+xmysql+nodeJs的实践分享

Postman是一款接口测试工具,相对Jmeter接口扁平简洁,很方便开发调试接口使用,如果想要用来做测试,实现批量接口管理,单个接口断言,以及特殊字符处理,甚至批量回归测试,生成报表,结合jenkins实现CI集成都是可以做到的。

  1. 环境变量,全局变量

    • 全局变量

      全局变量可用于postman 所有接口,设置方式如下图,其中Initial value是一个初始值到处是可用于分享于他人,current Value是至当前工程所使用的value

image

-环境变量
环境变量可添加多个,构建接口时可选择其中一个环境变量设置,如下图,可添加多组不同环境变量信息用于不同环境下的测试,也可直接导入同事导出的环境变量json文件

image

  1. 添加接口

postman对单个接口的支持相当丰富,可以按需选择,结构比较扁平化,基本测试一个接口所需的东西在一个页面都可以找到

image

填入参数时Bulk Edit比较方便,特别是有多组值的时候先点击Bulk Edit,贴入多组key:value值然后点击key-value edit可自动转换成表格格式。

  1. 前置脚本-Pre-request Script

在做批量回归测试的时候,有很多接口是需要类似于随机字符串/随机数字 或者时间戳等参数的,这种情况我们可以通过脚本来实现。Pre-request Script支持JS,如下脚本实现随机字符与特定格式时间戳并赋给环境变量:


pm.environment.set("randomname","测试计划"+Math.random());

pm.environment.set("today", getNowFormatDate());

function getNowFormatDate() {

        var date = new Date();

        var seperator1 = "-";

        var year = date.getFullYear();

        var month = date.getMonth() + 1;

        var strDate = date.getDate();

        if (month >= 1 && month <= 9) {

            month = "0" + month;

        }

        if (strDate >= 0 && strDate <= 9) {

            strDate = "0" + strDate;

        }

        var currentdate = year + seperator1 + month + seperator1 + strDate;

        return currentdate;

    }

上面pre-request脚本设置了两个环境变量,使用的时候用两层大括号括起来就好了,如下图:

image

  1. 测试脚本-Test

测试脚本可用于设计接口测试断言,可以分析response内容或者判断请求结果及状态等。右边提用了很多snippets可供参考使用,支持JS语言,也可以自己写一些辅助脚本来使用

image

5.导入导出

postman支持环境变量,全局变量及接口组合(Collection)的到如何导出,Collection右侧的小箭头点进去可以看到share/run以及export相关的功能,导入及导出的格式为json,可以放在相应的工程里方便管理与分享

6.newman,报表

确定机器上安装了NodeJs,然后通过npm安装newman:

npm install newman -g

安装newman之后可通过命令行直接跑collection:

newman run mycollection.json

带上导出的环境变量文件跑10遍:

newman run mycollection.json -e myenv.json -n 10

生成固定格式的报表(下面的命令会生成json,html,junit不同格式的报表):

newman run mycollection.json -e myenv.json --reporterscli,json,html,junit

  1. xmysql

有不少接口测试需要结合数据库验证,jmeter有提供专门的jdbc连接模块,postman却没有,但也不是完全不可做。对于mysql数据库有一个One command to generate REST APIs for any MySql Database的小工具xmysql非常的神奇好用:

安装:npm install xmysql -g

使用:xmysql -h localhost -u mysqlUser -p mysqlPassword -d databaseName

然后打开:http://localhost:3000就可以看到上面数据库相关的一堆json,找到你要查选的对应表,然后在postman中起一个get请求即可查询该表所有数据,可以在Test中添加相应的解析脚本判断查出的结果中是否包含期望的数据:

image

8.关于添加cookie

newman作为一个nodejs module可以很方便的放入到一个js工程中,例如我测试的产品,cookie构造的方式很复杂,只能通过模拟登陆的方式获取,如是我通过python写了一个简单的脚本通过页面模拟登陆获取cookie然后存入到导出的postman 环境变量json文件中,在通过newman js脚本来跑collection中的case,贴出newman js 部分脚本如下(生成html,junit格式报表用于跟jenkins集成)


var newman = require("newman");

newman.run({

    collection: require('./testAdvance.postman_collection.json'),

    environment:require('./TestFeatured.postman_environment.json'),

    reporters:['cli','html','junit']

}).on('start', function (err, args) { // on start of run, log to console

    console.log('running a collection...');

}).on('done', function (err, summary) {

    if (err || summary.error) {

        console.error('collection run encountered an error.');

    }

    else {

        console.log('collection run completed.');

    }

},process.exit);

  • 5
    点赞
  • 30
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
你可以通过以下步骤将 JSON 数据传递到 SQLite 数据库中: 1. 在 Postman 中创建一个 POST 请求,并设置请求的 URL 和头部信息。 2. 在请求的 Body 部分选择 "raw" 格式,然后选择 "JSON"。 3. 在请求的 Body 部分输入要传递的 JSON 数据。 4. 在后端代码中,使用适当的编程语言和框架来接收 POST 请求,并解析 JSON 数据。 5. 连接到 SQLite 数据库,并将解析后的 JSON 数据插入到数据库中。 以下是一个使用 Python 和 Flask 框架的示例代码: ```python from flask import Flask, request import sqlite3 import json app = Flask(__name__) @app.route('/insert_data', methods=['POST']) def insert_data(): try: # 解析 POST 请求中的 JSON 数据 data = request.get_json() # 连接到 SQLite 数据库 conn = sqlite3.connect('your_database.db') cursor = conn.cursor() # 将 JSON 数据插入到数据库中 for item in data: cursor.execute("INSERT INTO your_table (column1, column2) VALUES (?, ?)", (item['value1'], item['value2'])) # 提交事务并关闭连接 conn.commit() cursor.close() conn.close() return 'Data inserted successfully' except: return 'Error inserting data' if __name__ == '__main__': app.run() ``` 请注意,上述代码中的 "your_database.db" 是你的 SQLite 数据库文件名,"your_table" 是你要插入数据的表名,"column1" 和 "column2" 是你的表中的列名。 你可以根据自己的需求进行修改和扩展。确保在代码中添加适当的错误处理和安全措施。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值