Postman基础

Postman基础

Tests - JavaScript

设置 环境变量

// 解析 response 中的 json
var jsonData = pm.response.json();
// 设置 access_token 环境变量
pm.environment.set("access_token", jsonData.access_token);
// 设置 access_token 集合变量
pm.collectionVariables.set("access_token", jsonData.access_token);
// 设置 全局变量
pm.globals.set("access_token", jsonData.access_token);
// 设置 临时变量
pm.variables.set("access_token", jsonData.access_token);

删除 环境变量

// 删除 环境变量
pm.environment.unset("access_token", jsonData.access_token);

在脚本中 使用变量

// 在任何范围内访问变量,包括本地
pm.variables.get("variable_key");
// 获取 全局变量 的值
pm.globals.get("variable_key");
// 获取 集合变量 的值
pm.collectionVariables.get("variable_key");
// 获取 环境变量 的值
pm.environment.get("variable_key");

正则表达式实现接口关联

var result = responseBody.match(new RegExp('"access_token":"(.*?)"'));
console.log(result);

引用变量

  • {{变量名}}

  • 请求body通过将变量的引用括在双引号中来访问变量

  • { "customer_id" : "{{cust_id}}" }
    

动态变量(当输入{ 的时候,会自动显示三种随机变量)

应用:注册接口,注册一个账号后就不能重复注册

  • {{$guid}} :uuid-v4样式的guidimage-20230502111206495
  • {{$timestamp}}:当前时间戳(Unix时间戳,以秒为单位)
  • {{$randomInt}}:0到1000之间的随机整数

RUN运行

image-20230502111206496

参数化引用外部.csv/.json测试数据

第一行写变量的名称,变量之间用英文,分隔,后面每行写测试数据

QQ截图20230502130941

获取csv文件中变量的值

// 在 Console 中打印 csv 文件中的 principal 值
var username = pm.iterationData.get("principal")
console.log(username)

断言

  • 校验返回的bodyjson格式
pm.test("response must be valid and have a body", function () {
     pm.response.to.be.ok;
     pm.response.to.be.withBody;
     pm.response.to.be.json;
});
  • 对提取的返回结果校验
// 校验 code 为 0
pm.test("response code must to be 0", function(){
    var jsonData = pm.response.json();
    pm.expect(jsonData.code).to.equal(0);
});

//校验 msg 为 login success!
pm.test("response msg must to be login success!", function(){
    var jsonData = pm.response.json();
    pm.expect(jsonData.msg).to.equal("login success!");
});

// 响应结果的 长度
pm.test("response token_type length must to be 6", function(){
    var jsonData = pm.response.json();
    pm.expect(jsonData.token_type).to.lengthOf(6);
})

// 响应结果必须包含值的部分
pm.test("response must to be token", function(){
    pm.expect(pm.response.text()).to.include("bear");
})
  • 校验返回状态码是 200
pm.test("Status code is 200", function(){
    pm.response.to.have.status(200);
})
  • 断言状态消息
pm.test("Status code name is string", function(){
    pm.response.to.have.status("OK");
})
  • 断言响应时间
# 断言 响应时间 < 200ms
pm.test("Response time is less than 200ms", function(){
    pm.expect(pm.response.responseTime).to.be.below(200);
})
  • 校验Content-Type在返回头部
pm.test("Content-Type header is present",function(){
    pm.response.to.have.header("Content-Type");
})
  • 校验返回的头部 Content-Type 值为 application/json;charset=UTF-8
pm.test("Content-Type header is application/json;charset=UTF-8",function(){
    pm.expect(pm.response.headers.get("Content-Type")).to.eql("application/json;charset=UTF-8");
})
  • 断言接口返回的 json 数据中的某个值与环境变量中的值相等

QQ截图20230502202507

pm.test("Response property matches environment variable", function () {
  pm.expect(pm.response.json().form.username).to.eql(pm.environment.get("username"));
});
  • 利用数据驱动里面的参数断言

QQ截图20230802002544

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include(data.expected);
});

Postman其它知识

请求体Body

  • 选择form-data并添加键值,上传文件,请求头Headers会自动添加参数:Content-Type: multipart/form-data

  • 选择x-www-form-urlencoded并添加键值,请求体表单类型数据,请求头Headers会自动添加参数:Content-Type: application/x-www-form-urlencoded

  • 选择rawJSON并添加json格式字符串后,请求头Headers会自动添加参数:Content-Type: application/json

Postman生成测试报告

环境准备

  • 安装nodejs,安装后配置环境变量,在cmd中输入node -v检查安装版本

  • 安装newman

    # cmd 窗口输入
    npm install -g newman
    newman -v  # 检查 newman 版本
    
  • 安装html报告

    npm install -g newman-reporter-html
    

导出测试用例环境变量

  • Postman导出测试用例,在PostmanCollections的文件夹下右键选择Export,在指定路径生成一个名为collection名称.postman_collection.json文件

  • Postman导出环境变量,在指定路径生成一个名为collection名称环境变量.postman_collection.json文件

生成测试报告

# cmd 窗口输入以下命令,可在当前 cmd 路径下生成测试报告 文件夹,里面的 .html 文件即为测试报告
# -r 表示生成测试报告
newman run 测试用例地址 [-d 测试数据文件地址 -e 环境变量地址 -g 全局变量地址] -r html

# 在 cmd 窗口直接展示测试报告
newman run 测试用例地址 [-d 测试数据文件地址 -e 环境变量地址 -g 全局变量地址]

Postman连接数据库

环境准备

  • 安装nodejsMysql

  • 安装xmysql

    # cmd 窗口输入
    npm install -g xmysql
    xmysql  # cmd 窗口输入,验证 xmysql 是否安装成功
    

连接数据库

# cmd 窗口输入
xmysql xmysql -h 数据库IP地址 -u 用户名 -p 密码 -d 数据库名称
# 例如
xmysql xmysql -h localhost -u root -p 123456 -d student_database

# 如果提示“Error: ER_SUPPORTED_AUTH_MODE”(报错原因:msql8.0 连接使用的node-mysql模块不符合新版的规则)
# cmd 窗口,执行以下操作
mysql -u root -p
输入 数据库登录密码
alter user 'root'@'localhost' identified with mysql_native_password by '123456';
flush privileges;

Postman上连接数据库

xmysql默认端口号:3000

  • 按条件查询get请求):
    • 按条件查询数据:在url输入http://数据库IP地址:3000/api/数据库表名_where=(条件,eq,值)eq相等条件
    • 按条件查询多条数据:在url输入http://数据库IP地址:3000/api/数据库表名_where=(条件1,eq,值1)~and(条件2,eq,值2)
    • 按条件顺序查询:在url输入http://数据库IP地址:3000/api/数据库表名_fields=字段1,字段2
  • 插入数据post请求):在url输入http://数据库IP地址:3000/api/数据库表名,在Body选择raw中输入要插入的数据,使用json格式
  • 修改数据patch请求):在url输入http://数据库IP地址:3000/api/数据库表名,在Body选择raw中输入要修改的数据,使用json格式
  • 删除数据delete方法):
    • 删除单条数据:在url输入http://数据库IP地址:3000/api/数据库表名?条件=值
    • 删除多条数据:在url输入http://数据库IP地址:3000/api/数据库表名/bulk?条件=值1,值2,值3
posted @ 2023-05-02 21:50  暮雨星辰  阅读(139)  评论(0)    收藏  举报