使用postman接口测试
一 、postman断言
1、什么是断言
postman 断言借助JavaScript -js 语言编写代码,自动判断预期结果与实际结果是否一致。
断言代码写在 Tests 的标签中。(新版本在Scripts标签中)
2、断言工作原理
3、常用断言
断言响应状态码
// 断言响应状态码 是否为 200
pm.test("status code is 200",function(){pm.response.to.have.status(200)
});pm:代表 postman 的一个实例
test():是pm实例的一个方法。
有两个参数参数1:在断言成功后,给出的文字提示。可以修改。"statuscode is 200"参数2:匿名函数。
pm.response.to.have.status(200);//意思:postman 的响应结果中应该包含状态码 200
注意:新版本的断言在Scripts标签—>post-response
断言响应体是否包含某个字符串
pm.test("是否包含百度", function () {pm.expect(pm.response.text()).to.include("baidu");
});
pm:代表 postman 的一个实例
test():是pm实例的一个方法。
有两个参数参数1:在断言成功后,给出的文字提示。可以修改。"statuscode is 200"参数2:匿名函数。pm.expect(pm.response.text()).to.include("baidu");
断言响应体是否等于某个字符串(对象)
pm.test("Body is correct", function () {pm.response.to.have.body("response_body_string");
});
//需要将响应结果整个填入"response_body_string"中才能断言成功
断言json响应结果
pm.test("Your test name", function () {var jsonData = pm.response.json();pm.expect(jsonData.value).to.eql(100);
});
var jsonData =pm.response.json;
// var jsonData 用 js语法定义一个变量。jsonData 就是变量名
//pm.response.json();代表响应的json结果
/*举例:response.json();
{"success": true,"code": 10000,"message":"操作成功!","data":"95c78d75-721c-40fb-b2d5-742fea42cbd5"
}
*/
pm.expect(jsonData.value).to.eql(100);
// pm 预期 json结果 key对应的值 等于 xxx
// 举例:jsonData.value 的value:取:success、code、message、data
断言响应头
pm.test("Content-Type is present", function () {pm.response.to.have.header("Content-Type");
});pm.response.to.have.header("content-Type");
//pm 的响应 头中包含 Content-Type
// 示例:可以在 header 中,添加 响应头中的 key 对应的 value 判定。用 ,隔分。// 断言响应头
pm.test("content-Type is present",function(){pm.response.to.have.header("content-Type","application/json;charset=UTF-8");
});
二、全局变量、环境变量、请求前置脚本
全局变量
概念:在 Postman 全局生效的变量,全局唯一。
设置:
- 代码设置:pm.globals.set(“全局变量名”,全局变量的值)
// An highlighted block
// 示例:
pm.globals.set("glb_age", 100)
获取:
- 代码获取:var 接收值的变量= pm.globals.get(“全局变量名”)
// 示例:
var ret=pm.globals.get("glb_age")//ret 的值为 100
- 请求参数获取:(postman界面获取):{{全局变量名}}
// 示例:
{{glb_age}}
环境变量
概念:在特定环境(生产环境、开发环境、测试环境)下,生效的变量,在本环境内唯一。
设置:
- 代码设置:pm.environment.set(“环境变量名”,环境变量的值)
// 示例:
pm.environment.set("env_age", 99)
获取:
- 代码获取:var 接收值的变量= pm.environment.get(“环境变量名”)
// 示例:
var ret=pm.globals.get("env_age")//ret 的值为 99
- 请求参数获取:(postman界面获取):{{环境变量名}}
// 示例:
{{env_age}}
请求前置脚本
在 send 按钮点击后,请求前置脚本代码,第一时间被执行。在 postman 内部实际 http请求之前。
- 假设,这样一种场景:
调某接口时,要输入“时间戳”,如果输入的“时间戳”的绝对值,超过标准时间10分钟。 则不允许调用。
时间戳: 对应绝对时间,从1970年1月1日00:00:00 到现在 所经历的秒数
前置脚本工作原理
案例:调用百度首页接口,传时间戳给服务器
实现步骤:
1.在 Pre-request Script 标签页中,添加代码。拿到时间戳,写入全局变量
//拿到时间戳
var timestamp =new Date().getTime()
// 将时间戳设置到全局变量
pm.globals.set("glb_timestamp",timestamp)
2.点击 Send 按钮,发送请求。请求发送前执行 上述代码。写入全局变量
3.查看写入的变量
4.在 请求参数(界面)中,使用全局变量。{{全局变量名}}
三、postman关联
介绍:应用于 多个 http请求之间,有数据关联、或依赖关系时。
实现步骤
A接口 依赖 B接口 的数据
1.向B接口发送http请求,获取数据
2.将数据 设置 至 全局变量(环境变量)中
3. A接口 获取全局变量(环境变量)中 数据值,进行使用。
案例
请求 获取天气接口, 提取响应结果中的 城市,将城市名,给百度搜索接口使用。
实现步骤:
1.创建用例集,分别创建 查询天气 请求 和 百度搜索的请求
2.在查询天气请求 Tests 中,编写代码 获取 城市名,写入全局变量
//获取 全部响应结果
var jsonData=pm.response.json()
//从响应结果中 获取 城市名
var city=jsonData.weatherinfo.city
//将城市名写入到全局变量
pm.globals.set("glb_city", city)
3.点击 Send 按钮,发送请求,查看设置的全局变量。
4.修改 百度搜索请求,使用全局变量,按 城市名进行搜索,
批量执行用例集
四、postman生成测试报告
安装测试报告插件
安装步骤:
1.需要先安装node.js
2.安装newman
npm install -g newman
//验证安装成功:newman -v 出现版本号安装成功
3.安装newman-reporter-html
npm install -g newman-reporter-html
使用newman生成测试报告
步骤
1.批量执行测试用例集。(确认无误)
2.导出Export 用例集。(得到 xxxx.json文件)
3.在 终端 中 执行命令,生成测试报告
# 完整的命令
newman run xxxx.json -e 环境变量文件-d 外部数据文件 -r html --reporter-htm]-export 测试报告名.html
# 现在 终端中,测试一下
newman run xxxx.json
#如果添加 -r html就报错,说明newman-reporter-html安装失败
生成第一个测试报告
1.postman导出Export 用例集。(得到 xxxx.json文件)
2.命令行批量执行测试用例集,如果没出错可以生成报告
//批量执行测试用例集
newman run postman常用断言.postman_collection.json
//生成测试报告
newman run postman常用断言.postman_collection.json -r html --reporter-html -export 我的第一个测试报告.html
五、postman读取外部数据文件(参数化)
当 http请求,使用的 数据有较高相似度时,相同的请求时,考虑使用参数化(将数据组织到数据文件中)。
数据文件简介
CSV文件
优点:数据组织形式简单,适用于大量数据的场合。
缺点:
- 不支持 bool类型数据。(数据被 postman读入后,自动添加 “” (如"true")包裏bool值。
- 不支持 多参、少参、无参、错误参数 的接口测试。
- 不支持复杂数据类型。(如 嵌套字典、列表等)
JSON文件
优点
- 支持 bool 类型。
- 支持 多参、少参、无参、错误参数。
- 支持复杂数据类型。
缺点:对于相同数据量,JSON数据文件大小远大于 CSV文件。
导入外部数据文件
CSV文件
- 创建 xxx.csv 文件。
- 将数据写入到 csv文件中。
- 第一行 写入 的是 数据对应的“字段名” 。
- 从第二行向后依次是对应的数值,数据间用英文逗号隔分
- 在 Postman 中,选中使用数据文件的 用例集,导入数据文件。
- 点击用例集名称,使用 Run 按钮,进入“Runner"页面。
- 使用“Select File"按钮选择 xxx.csv 文件
- 点击preview 预览按钮,校验数据文件是否正确。
案例:
1.创建“测试csv参数化.csv”文件
2.点击postman的collection–>Run
3.点击select file选中测试csv参数化.csv文件
4.点击preview看是否导入csv文件成功
JSON文件
- 创建 xxx.json 数据文件
- 在 数据文件中,按json 语法写入json数据。postman要求,json格式的数据文件,数据内容的最外层必须是[1。内部所有的数据用 存储。
- 在 Postman 中,选中使用数据文件的 用例集,导入数据文件。
- 点击用例集名称,使用 Run 按钮,进入“Runner"页面。
- 使用“Select File"按钮选择 xxx.json 文件
- 点击 preview预览按钮,校验数据文件是否正确。
和csv文件一样,这里不做演示。
读取数据文件数据
根据使用数据 位置 不同,有两种获取数据文件中数据的方法。
第一种:请求参数(请求行、请求头、请求体)中,使用数据文件中 的数据。 使用 {{}} 包裹 csv 文件 字段名 或 json 文件中的 key"
如:{{username}}或{{password}}
第二种:代码(断言、请求前置脚本)中,使用 数据文件中 的数据。 需要借助 postman 提供的 关键字 data 点 csv 文件的字段名 或 json文件的 key
如:data.username 或data.password
案例
需求:批量查询手机号归属地、所属运营商,校验运营商数据正确性
接口:http://cx.shouji.360.cn/phonearea.php?number=13012345678
测试数据:
手机号:13012345678运营商: 联通
手机号: 13800001111运营商: 移动
手机号:18966778899运营商: 电信
实现步骤:
- 创建csv文件
- 断言设置,在代码中读取数据
- 在参数中读取数据
4. 导入数据文件,并且运行
5. 运行结果
注意点:使用数据文件驱动接口测试时,不能直接在接口处点击运行按钮,必须进入Runner页面运行接口测试
- 生成测试报告
步骤:
1.批量执行测试用例(借助数据文件)
2.导出 测试用例集 建议与 数据文件 放在一起)
3.执行生成测试报告的命令
newman run 用例集名称.json -d 数据文件名.csv/.json -r html --reporter-html-export 报告名称.html
相关文章:
使用postman接口测试
一 、postman断言 1、什么是断言 postman 断言借助JavaScript -js 语言编写代码,自动判断预期结果与实际结果是否一致。 断言代码写在 Tests 的标签中。(新版本在Scripts标签中) 2、断言工作原理 3、常用断言 断言响应状态码 // 断言响应状态码 是否为 200 pm.…...
Ubuntu24.04双系统安装(Linux/windows共存一文打通)
他向远方望去,无法看到高山背后的矮山,只能看到一座座更高的山峰。 目录 编辑 一.前言 二.虚拟机和双系统比较 三.Windows/Linux双系统安装 1.Rufus-制作U盘启动盘系统工具安装 2.Ubuntu24.04下载 3.Ubuntu-u盘启动盘制作 4.压缩磁盘留足安装空…...
C++ - deque
博客主页:【夜泉_ly】 本文专栏:【C】 欢迎点赞👍收藏⭐关注❤️ 文章目录 💡双端队列简介1. 基本特性2. 与其他容器的比较与 vector与 list 3. 中控数组的设计4. 优缺点优点缺点 5. 应用场景6. 结论 💡双端队列简…...
国产!瑞芯微米尔RK357核心板革新AIoT设备,8核6T高算力
随着科技的快速发展,AIoT智能终端对嵌入式模块的末端计算能力、数据处理能力等要求日益提高。近日,米尔电子发布了一款基于瑞芯微RK3576核心板和开发板。核心板提供4GB/8GB LPDDR4X、32GB/64GB eMMC等多个型号供选择。瑞芯微RK3576核心优势主要包括高性能…...
中国人寿财险青岛市分公司践行绿色金融,助力可持续发展
中国人寿财险青岛市分公司积极响应国家绿色发展战略,大力推进绿色金融实践。在保险产品创新方面,推出一系列绿色保险产品。如新能源汽车保险,为新能源汽车产业发展提供风险保障,促进交通领域的节能减排。环境污染责任保险则助力企…...
ajax 读取文件
DOMException: Failed to read the responseXML property from XMLHttpRequest: The value is only accessible if the objects responseType is or document (was blob). at XMLHttpRequest.r ( $.ajax({ url: 未来之窗_服务, method: GET, …...
火语言RPA流程组件介绍--开始监听网络请求
🚩【组件功能】:开始监听内置浏览器网络请求(提示:本组件仅适用于火语言内置浏览器) 配置预览 配置说明 匹配网址 可以添加一个或者多个匹配规则用于筛选需要保存的网络请求. 输入输出 输入类型 万能对象类型(Sy…...
CSS综合案例——新闻详情
一、知识点 1、文字颜色 属性名:color 属性值: 颜色表示方式属性值说明使用场景颜色关键字颜色英文单词red,green,blue学习测试rgb表示法rg(r,g,b)r,g,b表示红绿蓝三原色,取值0-255了解rgba表示法rgba(r,g,b,a)a表示透明度,取…...
【【自动驾驶】车辆运动学模型】
【自动驾驶】车辆运动学模型 1. 引言2. 以车辆重心为中心的单车模型2.1 模型介绍2.2 滑移角 β \beta β 的推导2.2 航向角 ψ \psi ψ推导过程:2.3 滑移角 β \beta β2.3 Python代码实现2.4 C代码实现 3. 前轮驱动的单车模型3.1 模型介绍3.3 Python代码实现3.4 …...
叉尖避障新科技:因泰立科技ILS-T52三维深度成像激光雷达
ILS-T52三维深度成像激光雷达是一款高性能的纯固态式激光雷达,采用激光时间飞行法,提供出色的三维图像成像和深度感知功能。特别适用于无人叉车领域,为叉尖避障提供卓越的三维成像和深度感知功能。它的高精度、自适应自动曝光、小尺寸、低功耗…...
精华帖分享 | 低估值还能涨多久?
本文来源于量化小论坛策略分享会板块精华帖,作者为亮子,发布于2024年3月19日。 这两年,A股给我们的感觉就是成长股坍塌,高股息低估值的股票扛起大旗。表现出来就是中国神华、中海油这样的垄断型央国企大涨,包括移动联通…...
如何制作一个自己的网站?
在今天的互联网时代,网站展示已经是一个很基础的营销工具。不管是企业、还是个人,如何制作一个自己的网站?本文将会提供一个全面的基础制作网页教程,教你如何从零开始制作网页。 网页制作的基础知识:HTML、CSS和JavaS…...
torch报错
The Kernel crashed while executing code in the current cell or a previous cell. Please review the code in the cell(s) to identify a possible cause of the failure. Click here for more info. View Jupyter log for further details. 从日志中可以看出,内…...
深入探索卷积神经网络(CNN):图像分类的利器
深入探索卷积神经网络(CNN):图像分类的利器 前言CNN的崛起:为何我们需要它?图像卷积:CNN的基石轮廓过滤器:捕捉边缘特征 图像池化:降低维度的利器CNN的组成:卷积层、池化…...
网站建设中需要注意哪些安全问题?----雷池社区版
服务器与应用安全指南 1. 服务器安全 1.1 操作系统安全 及时更新补丁:确保操作系统始终安装最新补丁,以防范系统漏洞。例如,Windows Server 定期推送安全更新,修复如远程代码执行等潜在威胁。优化系统服务配置:关闭不…...
光控资本:养老金融建设提速 高速铜缆市场空间广阔
养老金融制作提速 金融监管总局办公厅近来印发的《关于大力展开商业保险年金有关事项的奉告》(下称《奉告》)提出,进一步扩大商业养老金业务试点;开发习惯个人养老金准则的新产品和专属产品;保险公司要坚持长期出资、…...
部署前后端分离若依项目--CentOS7宝塔版
准备: CentOS7服务器一台 通过网盘分享的文件:CentOS 7 h 链接: https://pan.baidu.com/s/17DF8eRSSDuj9VeqselGa_Q 提取码: s7x4 大家有需要可以下载这个,密码61 若依前端编译后文件 通过网盘分享的文件:ruoyi-admin.jar 链…...
ubuntu22.04 R Rstudio conda python 深大
一、配置IP network:version: 2renderer: networkdethernets:eth0:dhcp4: noaddresses:- 172.20.0.52/24gateway4: 172.20.0.2nameservers:addresses: [8.8.8.8, 8.8.4.4] 二、update apt update apt upgrade 三、安装python ubuntu 22.04安装python3 在Ubuntu 22.04上安装…...
二百七十一、Kettle——ClickHouse增量导入数据清洗记录表
一、目的 在完成错误数据表任务后,需要对每条错误数据的错误字段及其字段值进行分析 Hive中原有SQL语句和ClickHouse现有SQL语句很大不同 二、Hive中原有代码 2.1 表结构 --31、静态排队数据清洗记录表 create table if not exists hurys_db.dwd_data_clean_…...
为什么说Tcp是面向字节流的以及(Tcp粘包问题、TCP/UDP对比、listen函数的backlog参数的意义)
为什么说Tcp是面向字节流的: Tcp通信的本质是创建一个tcp的socket,同时就会对应的创建一个发送缓冲区和接收缓冲区。 调用write时, 数据会先写入发送缓冲区中;如果发送的字节数太长, 会被拆分成多个TCP的数据包发出如果发送的字节数太短, 就会先在缓冲…...
Flink PostgreSQL CDC源码解读:深入理解数据流同步
目录 一、PostgreSQL的数据捕获和复制机制 二、WAL日志格式 三、Debezium部署架构 3.1 Kafka Connect With Debezium 3.2 Debezium Server 编辑3.3 作为嵌入式引擎 四、Flink Postgres CDC源码解读 4.1. 如何捕捉数据和更新快照 4.2. 捕获的数据怎么从Postgres SQL…...
系统架构设计师 软件架构的定义与生命周期
软件架构的定义 通过一系列的设计活动,以满足系统的功能性需求和符合一定的非功能性需求与质量属性有相似含义的软件系统框架模式。在软件体系结构设计过程中,主要考虑的是系统的非功能性需求 软件体系结构设计经验的总结与重用是软件工程的重要目标之一…...
从零开始使用Surya-OCR最新版本0.6.1——最强文本检测模型:新添表单表格检测识别
目录 一、更新概述 二、环境安装 1.基础环境配置 2.模型参数下载 3.参数地址配置——settings.py 三、指令使用 1.命令指令运行 一、更新概述 surya项目Github地址:https://github.com/VikParuchuri/surya 号称今年最强OCR的surya近期迎来新的更新,Vik…...
linux中级wed服务器(https搭建加密服务器)
一。非对称加密算法: 公钥:公共密钥,开放 私钥:私有密钥,保密 1.发送方用自己的公钥加密,接受方用发送方的私钥解密:不可行 2.发送方用接受方的公钥加密,接受方用自己的私钥解密…...
聊一聊为什么企业数字化转型总是三天热度
听到“数字化转型”,是不是脑子里立马蹦出各种炫酷词汇:AI、大数据、物联网、区块链……瞬间觉得公司马上就要起飞?可惜,现实往往是:转型刚刚起步时大家热血沸腾,结果没过多久一哄而散。最终,这…...
2025年NPDP产品经理认证考试时间和报考条件
在报考2025年NPDP认证考试前,了解NPDP相关考试信息是非常重要的,可以帮助我们更好地制定备考计划,提高学习效率。 NPDP考试时间 NPDP考试每年举办两次,分别在5月和11月进行,且考试一般安排在周末,以便在职的专业人士…...
微信小程序文字转语音播报案例
插件申请 在小程序官方申请同声传译插件,地址: mp.weixin.qq.com 引入插件 在app.json中加入 "plugins": {"WechatSI": {"version": "0.3.6","provider": "wx069ba97219f66d99"}},封装…...
QT SSDP 局域网检测支持扫描通信
一. 什么是SSDP? 简单服务发现协议(SSDP,Simple Service Discovery Protocol)是一种应用层协议,简单服务发现协议是在HTTPU和HTTPMU的基础上实现的协议。简单服务发现协议(SSDP)提供了在局域网里面发现设备的机制。客户端可以通过使用SSDP,根据自己的需要,在局域网查找特…...
python_学习2(仅为本人学习记录)
二、变量与字符串 1、变量的声明和赋值 a.变量在使用前必须要先赋值 b.删除变量,可以通过del语句删除。 a123 del a c.链式赋值 xy123 相当于 x123;y123 d.解包赋值 a,b,c1,2,3 相当于 a1 b2 c3 使用解包赋值给变量交换值:a,b3,4 a,bb,a 2、基本…...
手动将python的flask程序打包成exe在windows上执行
1、安装pyinstaller工具 (venv) PS D:\django\locallibrary> pip install pyinstaller Collecting pyinstallerDownloading pyinstaller-6.11.0-py3-none-win_amd64.whl.metadata (8.4 kB) Requirement already satisfied: setuptools>42.0.0 in d:\django\locallibrary…...
wordpress 中文图片/网页制作与设计教程
肖战作为“X玖少年团”的主唱,在《陈情令》饰演夷陵老祖魏无羡)走红,并一直坚持抗强扶弱的信念,在《陈情令》中演唱了魏无羡主题曲“曲尽陈情”和合唱团“无羁”。他的演技得到了大家的认可,随后的一系列活动巩固了他的最高地位。…...
网站建站的一般步骤/媒体邀约
2019独角兽企业重金招聘Python工程师标准>>> 一、手工编译ceph源代码。 1、下载ceph源代码。 从阿里云开源镜像网站下载当前最新版本的ceph源代码,具体下载地址如下:http://mirrors.aliyun.com/ceph/tarballs/ceph_10.2.1.orig.tar.gz 2、编译…...
用ih5做微网站/靠谱的代写平台
URL : 统一资源定位符 (Uniform Resource Locator, URL) 完整的URL由这几个部分构成: scheme://host:port/path?query#fragment scheme 通信协议 (常用的http,ftp,maito等) host 主机 (域名或IP) port 端口号 path 路径 query 查询可选,用于给动态…...
和嗲囡囡和做的网站/seo网络推广哪家专业
面向问题:某java文件A中定义类需要被其他文件B中的类调用。 思路:将A文件架包-jar,将-jar导入到B文件中. 新建文件夹bin用于存储jar包 找到jar,用鼠标拖到需要它工程的bin中...
如何规避电子政务门户网站建设教训/如何做到精准客户推广
2019独角兽企业重金招聘Python工程师标准>>> 【中国公益在线广州讯 记者张强】10月19日,由中国.尚洋科技、法国.科诗美蒂卡主办,珠海尚妆生物科技有限公司承办,世界旅游辣妈大赛组委会、广东省色妆职业培训学院、南方日报社、广东…...
wordpress网站目录/今日军事新闻头条视频
GIT本地回退版本并且更新远程仓库 当不小心向远程仓库比如github做了一次错误的提交,想使本地和仓库回到某一个历史版本怎么办? 首先根据提交记录找到你想要回到的commit id(版本号) 然后回退到这个版本 git reset --hard 3628164…...