• postman的断言、关联、参数化、使用newman生成测试报告


    Potman 断言

    Postman 断言简介

    • 让 Postman工具 代替 人工 自动判断 预期结果 和 实际结果 是否一致
    • 断言代码 书写在 Tests 标签页中。 查看断言结果
      Test Results 标签页

    Postman 常用断言

    1. 断言响应状态码
    Status code:Code is 200

    // 断言响应状态码为 200
    pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
    });
    pm:postman的实例。
    test() postman实例的测试方法。 这个方法 有 2 个参数。
    参1:"Status code is 200"。 这个参数可以任意修改,不影响 断言。
    作用:在断言结束后,显示给用户,断言结果的提示文字。
    参2:是一个 匿名函数 调用。
    pm.response.to.have.status(200); 的意思是:
    postman的响应结果中,应该有 响应状态码 200。 ———— 这里的 200 是 预期结果。
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    2. 断言包含某字符串
    Response body: Contains string

    pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
    });
    pm:postman的实例。
    test() postman实例的测试方法。 这个方法 有 2 个参数。
    参1:"Body matches string"。 这个参数可以任意修改,不影响 断言。
    作用:在断言结束后,显示给用户,断言结果的提示文字。
    参2:是一个 匿名函数 调用。
    pm.expect(pm.response.text()).to.include("string_you_want_to_search"); 的意思是:
    postman 期望 响应文本中,应该包含 “你想搜索的字符串”(预期结果)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10

    3. 断言JSON数据
    Response body: JSON value Check

    pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
    });
    pm:postman的实例。
    test() postman实例的测试方法。 这个方法 有 2 个参数。
    参1:"Body matches string"。 这个参数可以任意修改,不影响 断言。
    作用:在断言结束后,显示给用户,断言结果的提示文字。
    参2:是一个 匿名函数 调用。
    var jsonData = pm.response.json(); 将 整个 json响应体 赋值到 变量 jsonData 上。
    pm.expect(jsonData.value).to.eql(100); postman 期望 json结果中 指定key 的值为 xxx
    value 能取值:success、code、message
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    Postman 关联

    当接口和接口之间,有依赖关系时,需要借助 postman 关联技术,来实现。
    如: 登录接口 返回的 令牌数据,被 添加员工接口依赖。
    添加员工接口 返回 员工id,被 查询员工接口依赖。

    实现步骤

    假定:接口B 产生的数据,被 接口A 依赖。

    1. 发送 接口B 请求,获取响应数据。
    2. 将 响应数据,放入公共容器(全局变量、环境变量)中
    3. 接口A 从 公共容器中,提取数据,发送请求。

    核心代码

    // 1. 获取 响应数据,转为 json格式,保存到变量 jsonData中。
    var jsonData = pm.response.json()
    // 2.1 使用 全局变量做容器。
    pm.globals.set("全局变量名", 全局变量值)
    // 2.2 使用 环境变量做容器。
    pm.environment.set("环境变量名", 环境变量值)
    // 3. 在 postman 界面中(URL、请求头headers、请求体body) 提取 全局、环境变量 数据。
    {{全局变量名}}/{{环境变量名}}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    例:从获取天气接口http://www.weather.com.cn/data/sk/101010100.html
    获取返回结果中的城市名称
    调用百度搜索接口: http://www.baidu.com/S?wd=北京 ,把获取到的城市名称,如:北京,作为请求参数
    在这里插入图片描述
    Tests 代码:

    // 1. 获取响应结果
    var jsonData = pm.response.json()
    // 2. 从响应结果中,提取 城市名
    var city = jsonData.weatherinfo.city
    // 3. 将城市名保存到 全局变量
    pm.globals.set("glb_city", city)
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    Postman 参数化

    什么是参数化:
    将 测试数据,组织到 数据文件中,通过脚本的反复迭代,使用不同的数据,达到测试不同用例的目标。
    应用场景:
    一般在测试同一个接口的不同 测试点时,只有测试数据不同。考虑使用 参数化。

    编写数据文件

    在这里插入图片描述

    导入数据文件到postman

    点击“run”按钮进入runner页面
    在这里插入图片描述

    点击“preview”预览参数文件,确认数据无误

    在这里插入图片描述

    读取数据文件数据

    理论
    根据 使用位置 不同,有两种方法。

    • 第一种:请求参数(请求行、请求头、请求体)中,使用 数据文件中 的数据
      csv文件:{{字段名}}; json文件:{{键名}}
    • 第二种:代码(Tests)中,使用 数据文件中 的数据
      使用 postman 内置的 关键字 data,索引 字段名 或 键名
      csv文件:data.字段名; json文件:data.键名

    例:
    需求:批量查询 手机号 所属运营商,校验运营商数据正确性
    接口: http://cx.shouji.360.cn/phonearea.php?number=13012345678
    测试数据:
    手机号: 13012345678 运营商: 联通 手机号: 13800001111 运营商: 移动 手机号: 18966778899 运营商: 电

    在这里插入图片描述

    拓展-查看控制台:

    在这里插入图片描述

    postman的导出和导入

    导出
    在这里插入图片描述

    导入
    在这里插入图片描述
    环境文件导出
    测试用例脚本中,包含 环境使用,需要导出 环境文件
    在这里插入图片描述

    Postman 测试报告

    使用newman插件生成测试报告

    前置步骤:
    1、安装node.js
    https://nodejs.org/zh-cn/download/

    # 安装
    双击 .msi 文件,一路下一步安装即可。无需特殊设定。
    # 测试安装成功
    npm -v
    
    • 1
    • 2
    • 3
    • 4

    2、安装newman

    # 安装newman
    npm install -g newman
    # 测试安装成功
    newman -v
    # 安装newman插件 - 扩展版
    npm install -g newman-reporter-htmlextra
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    3、newman生成测试报告

    # 完整命令
    newman run 用例集文件.json -e 环境文件.json -d 数据文件.json/.csv -r htmlextra --reporterhtmlextra-export 测试报告名.html
    -e 和 -d 是 非必须的。
    如果没有使用 环境,不需要指定 -e
    如果没有使用 数据文件(做参数化),不需要指定 -d
    
    例:
    newman run 用例集文件.postman_collection.json -d login.json -r htmlextra --reporter-htmlextraexport 测试报告.html
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8

    在这里插入图片描述

    拓展:
    1、post环境变量的默认值
    在这里插入图片描述
    使用场景:

    在这里插入图片描述

    2、强制类型转换
    断言时出现提示 数值 X 不等于字符串 ‘X’
    在这里插入图片描述
    需要进行强制类型转换:在这里插入图片描述

    3、响应数据为列表时的断言
    响应数据格式:
    在这里插入图片描述
    方法一:取出元素进行断言
    例如:断言第一个数据元素id的值为1
    在这里插入图片描述
    断言:
    在这里插入图片描述

    方法二:断言返回数据的长度
    如:断言返回了三条数据
    在这里插入图片描述

  • 相关阅读:
    Nacos服务注册
    2.2 进程调度实验
    Unity3d的海盗王地图
    mysql中EXPLAIN命令解析
    Aragon创建DAO polygon BSC测试网
    如何让 Docker Compose 等待依赖容器
    【Docker 基础教程】侃侃而谈Docker镜像
    挂载别的系统挂掉的磁盘解决步骤,mount: unknown filesystem type ‘LVM2_member‘ 报错
    mysql求当月有多少天
    本次CTF·泰山杯网络安全的基础知识部分(二)
  • 原文地址:https://blog.csdn.net/qq_40794986/article/details/127799291