当前位置: 首页 > news >正文

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 是 预期结果。

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 期望 响应文本中,应该包含 “你想搜索的字符串”(预期结果)

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

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) 提取 全局、环境变量 数据。
{{全局变量名}}/{{环境变量名}}

例:从获取天气接口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)

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

2、安装newman

# 安装newman
npm install -g newman
# 测试安装成功
newman -v
# 安装newman插件 - 扩展版
npm install -g newman-reporter-htmlextra

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、post环境变量的默认值
在这里插入图片描述
使用场景:

在这里插入图片描述

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

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

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

相关文章:

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

Potman 断言 Postman 断言简介 让 Postman工具 代替 人工 自动判断 预期结果 和 实际结果 是否一致断言代码 书写在 Tests 标签页中。 查看断言结果 Test Results 标签页 Postman 常用断言 1. 断言响应状态码 Status code:Code is 200 // 断言响应状态码为 200…...

春招大盘点:找工作除了招聘网站还有哪些渠道?

又是一年毕业季,估计同学们都正在写论文、找工作两头忙,很多同学和小C“诉苦”说现在找实习的渠道太少了,招聘网站都刷完了,也没看到很合适的岗位。那找工作除了招聘网站还有什么渠道呢?其实是有的,今天就为…...

eNSP 构建基本WLAN

配置项配置参数AP组 名称:hcia-group 应用模板:域管理模板hcia-domain、VAP模板hcia-vap 域管理模板 名称:hcia-domain 国家码:cn SSID模板 名称:hcia-ssid SSID名称:hcia-wlan 安全模板 名称:h…...

Python是不是被严重高估了?

Python起源一种shell的脚本语言 ,而现在已经发展成最通用的语言之一了,TIOBE指数的数据显示,Python是目前世界上最受欢迎的编程语言。 Python之所以这么受欢迎有很多原因。从Web开发到物联网编程再到AI等各个方面都能用到它。另外Python代码…...

给你一个购物车模块,你会如何设计测试用例?【测试用例设计】

测试购物车 从使用场景上,把自己想象成一个使用购物车的人,模拟流程,可以主要从两个方面进行考虑: 涉及操作:增(添加商品)删(删除商品)改(编辑、跳转商品&a…...

【wps】【毕业论文】三线表的绘制

目录 一、三线表 二、制作步骤 (1)点击“插入”——点击“表格”创建一个表格 (2)选中整个表格——鼠标右键选择“边框和底纹”,“表格属性”再点击“边框和底纹”——点击“自定义”——选择表格的边的宽度——如图…...

Spring Cloud Alibaba 多租户saas企业开发架构技术选型和设计方案

基于Spring Cloud Alibaba 分布式微服务高并发数据平台化(中台)思想多租户saas设计的企业开发架构,支持源码二次开发、支持其他业务系统集成、集中式应用权限管理、支持拓展其他任意子项目。 一、架构技术选型 核心框架 Spring Boot SOA Spring Cloud …...

Unity IL2CPP 游戏分析入门

一、目标 很多时候App加密本身并不难,难得是他用了一套新玩意,天生自带加密光环。例如PC时代的VB,直接ida的话,汇编代码能把你看懵。 但是要是搞明白了他的玩法,VB Decompiler一上,那妥妥的就是源码。 U…...

Python的23种设计模式(完整版带源码实例)

作者:虚坏叔叔 博客:https://xuhss.com 早餐店不会开到晚上,想吃的人早就来了!😄 Python的23种设计模式 一 什么是设计模式 设计模式是面对各种问题进行提炼和抽象而形成的解决方案。这些设计方案是前人不断试验&…...

OAuth2协议

OAuth2协议流程图协议角色和流程授权所需信息授权方式授权码模式(authorization code)参数简化模式密码模式客户端模式授权方式小结流程图 协议角色和流程 user-agent:浏览器或者手机App平台 资源所有者(resourc owner&#xff0…...

LeetCode-115. 不同的子序列

目录动态规划题目来源 115. 不同的子序列 动态规划 1.确定dp数组(dp table)以及下标的含义 dp[i][j]:以i-1为结尾的s子序列中出现以j-1为结尾的t的个数为dp[i][j]。 2.确定递推公式 这一类问题,基本是要分析两种情况 t[i - 1…...

kubernetes scheduler 源码解析及自定义资源调度算法实践

kubernetes scheduler 浅析 什么是kubernetes scheduler? 小到运行着几十个工作负载的 kubernetes 集群,大到运行成千上万个工作负载 kubernetes 集群,每个工作负载到底应该在哪里运行,这需要一个聪明的大脑进行指挥&#xff0c…...

MySQL插入数据

目录 一、怎么样插入数据 二、通过命令提示窗口插入数据 三、使用PHP脚本插入数据 一、怎么样插入数据 在MySQL 表中可以使用 INSERT INTO SQL语句来插入数据。 可以通过 mysql> 命令提示窗口中向数据表中插入数据,或者通过PHP脚本来插入数据。 下面是向MyS…...

从GPT-4、文心一言再到Copilot,AIGC卷出新赛道?

业内人都知道,上一周是戏剧性的,每一天,都是颠覆各个行业,不断 AI 化的新闻。 OpenAI发布GPT-4、百度发布文心一言、微软发布Microsoft 365 Copilot 三重buff叠加,打工人的命运可以说是跌宕起伏,命途多舛了…...

1.2 从0开始学Unity游戏开发--运行原理

在我开始学习游戏开发的时候,有了好多年的客户端开发经验,并且刚毕业那会还使用cocos2dx做过一点小的2d横版过关游戏,因此对我来说做游戏开发到底是做什么还是比较清晰的,但是如果从来没做过游戏开发,甚至连客户端开发也没怎么做过的人可能没那么好理解游戏到底是怎么运作…...

【微信小程序】如何获得自己当前的定位呢?本文利用逆地址解析、uni-app带你实现

目录 前言 效果展示 一、在腾讯定位服务配置微信小程序JavaScript SDK 二、使用uni-app获取定位的经纬度 三、 逆地址解析,获取精确定位 四、小提示 前言 效果展示 一、在腾讯定位服务配置微信小程序JavaScript SDK 在浏览器搜索腾讯定位服务,找…...

92年程序员发帖晒薪资称自己很迷茫,网友:老弟你可以了

当下,是一个“向钱看,向厚赚”的社会。快节奏的生活下,家庭、工作各方面压力很容易使年轻人陷入迷茫和焦虑。 与其他行业相比,程序员的高薪让人羡慕。那么,对于那些真正达到这么多收入的人来说,他们是怎么…...

阿里四面,居然栽在一道排序算法上

前言 算法是程序的灵魂,一个优秀的程序是可以在海量的数据中,仍保持高效计算。目前各大厂的面试要求也越来越高,算法肯定会要去。如果你不想去大厂,只想去小公司,或许并不需要要求算法。但是你永远只能当一个代码工人&…...

macOS 13.3(22E252)/12.6.4/11.7.5正式版发布

系统介绍 3 月 28 日消息,苹果今日向 Mac 电脑用户推送了 macOS 13.3 更新(内部版本号:22E252)苹果今天还发布了macOS Monterey 12.6.4和macOS Big Sur 11.7.5,本次更新距离上次发布隔了 42 天。 macOS Ventura 带来…...

MPP数据库简介及架构分析

目录什么是MPP?特性并行处理超大规模数据仓库真正适合什么典型的分析工作量数据集中化线性可伸缩性MPP架构技术特性数据库架构分析Shared EverythingShared DiskShare MemoryShared NothingShared Nothing数据库架构优势什么是MPP? MPP (Massively Paral…...

Python爬虫实战:研究MechanicalSoup库相关技术

一、MechanicalSoup 库概述 1.1 库简介 MechanicalSoup 是一个 Python 库,专为自动化交互网站而设计。它结合了 requests 的 HTTP 请求能力和 BeautifulSoup 的 HTML 解析能力,提供了直观的 API,让我们可以像人类用户一样浏览网页、填写表单和提交请求。 1.2 主要功能特点…...

AI-调查研究-01-正念冥想有用吗?对健康的影响及科学指南

点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...

React第五十七节 Router中RouterProvider使用详解及注意事项

前言 在 React Router v6.4 中&#xff0c;RouterProvider 是一个核心组件&#xff0c;用于提供基于数据路由&#xff08;data routers&#xff09;的新型路由方案。 它替代了传统的 <BrowserRouter>&#xff0c;支持更强大的数据加载和操作功能&#xff08;如 loader 和…...

PPT|230页| 制造集团企业供应链端到端的数字化解决方案:从需求到结算的全链路业务闭环构建

制造业采购供应链管理是企业运营的核心环节&#xff0c;供应链协同管理在供应链上下游企业之间建立紧密的合作关系&#xff0c;通过信息共享、资源整合、业务协同等方式&#xff0c;实现供应链的全面管理和优化&#xff0c;提高供应链的效率和透明度&#xff0c;降低供应链的成…...

【第二十一章 SDIO接口(SDIO)】

第二十一章 SDIO接口 目录 第二十一章 SDIO接口(SDIO) 1 SDIO 主要功能 2 SDIO 总线拓扑 3 SDIO 功能描述 3.1 SDIO 适配器 3.2 SDIOAHB 接口 4 卡功能描述 4.1 卡识别模式 4.2 卡复位 4.3 操作电压范围确认 4.4 卡识别过程 4.5 写数据块 4.6 读数据块 4.7 数据流…...

Leetcode 3577. Count the Number of Computer Unlocking Permutations

Leetcode 3577. Count the Number of Computer Unlocking Permutations 1. 解题思路2. 代码实现 题目链接&#xff1a;3577. Count the Number of Computer Unlocking Permutations 1. 解题思路 这一题其实就是一个脑筋急转弯&#xff0c;要想要能够将所有的电脑解锁&#x…...

docker 部署发现spring.profiles.active 问题

报错&#xff1a; org.springframework.boot.context.config.InvalidConfigDataPropertyException: Property spring.profiles.active imported from location class path resource [application-test.yml] is invalid in a profile specific resource [origin: class path re…...

push [特殊字符] present

push &#x1f19a; present 前言present和dismiss特点代码演示 push和pop特点代码演示 前言 在 iOS 开发中&#xff0c;push 和 present 是两种不同的视图控制器切换方式&#xff0c;它们有着显著的区别。 present和dismiss 特点 在当前控制器上方新建视图层级需要手动调用…...

怎么让Comfyui导出的图像不包含工作流信息,

为了数据安全&#xff0c;让Comfyui导出的图像不包含工作流信息&#xff0c;导出的图像就不会拖到comfyui中加载出来工作流。 ComfyUI的目录下node.py 直接移除 pnginfo&#xff08;推荐&#xff09;​​ 在 save_images 方法中&#xff0c;​​删除或注释掉所有与 metadata …...

【iOS】 Block再学习

iOS Block再学习 文章目录 iOS Block再学习前言Block的三种类型__ NSGlobalBlock____ NSMallocBlock____ NSStackBlock__小结 Block底层分析Block的结构捕获自由变量捕获全局(静态)变量捕获静态变量__block修饰符forwarding指针 Block的copy时机block作为函数返回值将block赋给…...