跳到主要内容

数据库

提示

预执行操作是指在接口发送前先执行的操作,支持自定义脚本、连接数据库,常用来设置入参、打印数据等,后执行操作是指在接口发送后执行的操作,常用来设置变量、设置断言等,支持自定义脚本、连接数据库、提取变量、断言

Apipost提供了数据库连接功能,以便开发者可以在接口调试中可以使用数据库获取入参或进行断言校验

支持MysqlSQL SeverOracleClickhouse达梦数据库PostgreSQLRedisMongoDB8种数据库的连接操作

可以在Api调试接口用例自动化测试的预执行后执行脚本中进行数据库的相关操作

如何连接数据库

可查看数据字典中的 数据库管理 使用文档

如何在预后执行操作中添加数据库

  1. 添加数据库
select * from user limit 5;//一个标准简单的查询语句,从user表中查询5条数据

组 69.png

  1. 打印查询结果

组 70.png

  1. 提取结果到变量

组 71.png

数据库常用场景

1 获取数据,作为请求入参

首先需要在预执行操作的数据库里提取到变量

组 71.png

然后再请求参数理引用变量,就可以看到返回结果了

image.png

2 获取数据,作为断言使用

主要在后执行操作中添加数据库和自定义脚本

场景:断言返回的响应内容中的email是否正确

//断言示例
apt.test("邮箱是否正确", function () {
var jsonData = apt.response.json();
apt.expect(jsonData.request.email).to.eql(apt.environment.get("email"));
});

组 72.png

组 73.png

断言结果失败,因为实际返回的email与数据库中的email不一样

image.png

可以点击右上角环境旁边的设置icon,查看我们设为环境变量的数据

image.png

3 通过使用变量,查询满足条件的数据

场景:用户登入成功,获取到用户id,需要查询打印出该用户id的用户信息

  1. 输入登入接口
  2. 添加后执行操作,将响应体中的userid设为环境变量
  3. 添加数据库操作,写查询语句,where条件写 user_id={{userid}}

image.png

image.png

4 向数据库插入数据

除了select(查询)语句外,同样支持使用 insert(插入)语句,向数据库内插入数据

以mysql数据库举例

INSERT INTO 表名 ( 列名1, 列名2, 列名3...)
VALUES ( 数据1, 数据2, 数据3...);

此处的数据1、数据2支持使用变量、动态值

例如:向user表中插入一个用户信息,已知邮箱地址,我们可以通过mock数据生成nick_name和密码,

INSERT INTO user ( nick_name, role, email,email_verify,password)
VALUES ( '{{$fakerjs.Internet.displayName}}', 1, 'demo@example.com',-1,'{{$fakerjs.Internet.password}}');

通过动态值可以生成随机模拟数据,同时也可以直接使用变量 image.png

image.png