你要一定用的上的Postman 使用小技巧

news2024/11/17 13:51:59

目录

一、什么是 Postman(前世今生)

二、使用变量

2.1 变量作用域适用于 Postman 中不同的场景

2.2 编辑全局和环境变量

2.3 编辑集合变量

2.4 使用系统内置动态变量

三、Postman 请求生命周期

3.1 在前置请求(pre-request script)中使用脚本

3.2 发送请求(request)

3.3 接收一个响应(response)

3.4 在测试(tests)中使用脚本

四、使用 Postman 抓包

4.1 开启抓包

4.2 抓包效果

五、使用代理

六、使用 Collection Runner

七、命令行脚手架 Newman

八、付费功能

总结:


一、什么是 Postman(前世今生)

Postman 诞生于 2013 年,一开始只是 Abhinav Asthana 着手于解决 API 测试的工具,随着这个工具的使用者和需求迅速激增,Abhinav Asthana 找了他的两个前同事 Ankit Sobti 和 Abhijit Kane 一起创建了公司 Postman Inc。

如今 Postman 已经成为一个 API 开发的协作平台。Postman 简化了构建 API 的每个步骤,并简化了协作,这样就可以更快地创建 API。

二、使用变量

Postman 允许用户在发送和接收时使用变量,以提高工作效率和可读性(不过只能保存字符串类型的值,所以复杂数据类型需要借助于 JSON.stringify() 和 JSON.parse() 来管理)。

例如在不同运行环境中设置域名地址为变量:

 Postman 支持在不同的作用域和上下文中使用变量,遵循就近原则,即如果在 Global 和 Environment 中都有变量 name,则会取 Environment 中的 name。

2.1 变量作用域适用于 Postman 中不同的场景

  • Global:全局变量可以在整个工作空间(Workspace)中使用,因为无法控制使用环境和容易造成混淆,应当是不可变的全局常量,谨慎使用。pm.globals.set("variable_key", "variable_value"); pm.globals.get("variable_key");
  • Collection:集合变量在单个集合(Collection)中可用,往往具备通用的业务绑定属性,例如:商品属性、会员等级、通用秘钥等。pm.collectionVariables.set("variable_key", "variable_value"); pm.collectionVariables.get("variable_key");
  • Environment:环境变量允许请求适应不同的环境,例如:本地、测试、预演和生产环境,常常用来区别请求地址。pm.environment.set("variable_key", "variable_value"); pm.environment.get("variable_key");
  • Data: 数据变量来自外部 CSV 和 JSON 文件,当通过 Newman 或 Runner 来运行时才用到。
  • Local:局部变量只在单个请求生命周期中可用,运行完成后自动销毁。pm.variables.set("variable_key", "variable_value"); pm.variables.get("variable_key");

 

2.2 编辑全局和环境变量

 

2.3 编辑集合变量

 

2.4 使用系统内置动态变量

Postman 内置了很多常见场景的动态变量。

备注:Postman 支持在 Pre-request Script 和 Tests 中打印调试信息,和浏览器控制台一致,可以使用命令:console.log()、console.info()、console.warn() 和 console.error()。

 

console.log('当前时间戳:', pm.variables.replaceIn('{{$timestamp}}'));
console.log('随机颜色:', pm.variables.replaceIn('{{$randomColor}}'));
console.log('随机 IP:', pm.variables.replaceIn('{{$randomIP}}'));
console.log('随机名字:', pm.variables.replaceIn('{{$randomFullName}}'));
console.log('随机职业:', pm.variables.replaceIn('{{$randomJobType}}'));
console.log('随机城市:', pm.variables.replaceIn('{{$randomCity}}'));
console.log('随机图片:', pm.variables.replaceIn('{{$randomImageUrl}}'));

# 输出
当前时间戳:1609060090
随机颜色:azure
随机 IP:163.140.207.64
随机名字:Chester Funk
随机职业:Coordinator
随机城市:Port Devinborough
随机图片:http://placeimg.com/640/480

三、Postman 请求生命周期

在 Postman 中,一个完整的 Postman 请求生命周期,除了常规的请求(request)和响应(response),还包括前置请求脚本(pre-request script)和后置测试脚本(tests script)。Postman 包含一个基于 Node.js 的强大运行态(runtime),允许用户在 pre-request script 和 tests 事件中编写 JavaScript 代码。

 

3.1 在前置请求(pre-request script)中使用脚本

前置请求脚本(pre-request script)顾名思义就是在请求发送之前执行的脚本。

 

3.2 发送请求(request)

小技巧一:在链接中使用 :id 自定义路径参数

小技巧二:Cookie 可编辑

 

3.3 接收一个响应(response)

小技巧:保存响应结果

保存后的结果可以作为案例或记录以便开发使用。

 

3.4 在测试(tests)中使用脚本

Postman 支持在请求响应后通过测试脚本来验证请求是否符合预期。

 

示例一:验证响应状态码是否是 200

pm.test("Status test", function () {
    pm.response.to.have.status(200);
});

示例二:验证返回的业务数据(JSON)是否符合预期

pm.test("请求成功!", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.message).to.eql('success');
});

四、使用 Postman 抓包

在 Postman 应用程序中有一个内置代理来捕获 HTTP 请求。

  1. Postman 应用程序监听客户端应用程序或设备发出的任何调用。
  2. Postman 代理捕获请求并将请求转发给服务器。
  3. 服务器通过 Postman 代理将响应返回给客户端。

 

4.1 开启抓包

 

本机 IP 地址:

 

手机设置:

 

4.2 抓包效果

五、使用代理

代理服务器是一个应用程序或系统,作为计算机和互联网之间的中介,或者更具体地说就是代表着客户端和服务器,向网站、服务器和其他互联网服务发出请求。

除了传递信息,代理可以做更多的事情:

  1. 记录你的机器和互联网之间的所有流量。
  2. 显示所有请求、响应、Cookie 和标题的内容。
  3. 路由流量到指定的因特网位置。
  4. 调试接口。
  5. 防止直接攻击,保证安全性。
  6. DevOps 负载平衡。

 

默认情况下,Postman 将使用自带的系统代理,如果自定义了代理,优先级将高于自带的系统代理。

 

六、使用 Collection Runner

集合运行器(Collection Runner)允许以指定顺序运行集合里面的请求。Collection Runner 将记录请求测试结果,并且脚本可以在请求之间传递数据。

七、命令行脚手架 Newman

Postman 提供脚手架工具 Newman 来以命令行的方式来运行集合(Collection)请求,其提供和 Postman 桌面端一致的功能,可以集成在工作流的 CI/CD 中。

# 安装
npm install -g newman

# 运行文件
newman run mycollection.json

# 运行 URL
newman run https://www.postman.com/collections/cb208e7e64056f5294e5 -e dev_environment.json

八、付费功能

另外 Postman 提供了很多团队协作需要的付费功能,例如:文档、监控、健康检查等。

 

总结:

感谢每一个认真阅读我文章的人!!!

我个人整理了我这几年软件测试生涯整理的一些技术资料,包含:电子书,简历模块,各种工作模板,面试宝典,自学项目等。欢迎大家点击下方名片免费领取,千万不要错过哦。

                                             

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/660278.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

【期末总复习】神经网络与深度学习蒲公英书

浅层学习 one-hot向量 相似度的概念 局部表示和分布式表示示例 学习器 准确率 机器学习的三个基本要素:模型、学习准则、优化算法 【概念】期望风险 【概念】损失函数 【运用】三分类问题 【概念】过拟合 【概念】欠拟合 超参数 【选择 / 判断】验证集概念 线性回归…

C语言实现链表

绪论 机遇对于有准备的头脑有特别的亲和力。本章将讲写到链表其中主要将写到单链表和带头双向循环链表的如何实现。 话不多说安全带系好,发车啦(建议电脑观看)。 附:红色,部分为重点部分;蓝颜色为需要记忆的…

oracle expdp导致system表空间满

今天下午,项目经理反馈有套11204版本数据库无法使用了,立刻登录检查环境发现SYSTEM表空间使用率99.99%了 TABLESPACE_NAME MAXSIZE_MB ACTUALSIZE_MB USED_MB FREESPACE_MB SPACE USAGE ----------------- ---------- ------------- ---------- …

单向散列函数(哈希)【密码学】(一)

目录 一、前言:密码学有什么用? 二、单向散列函数 1、单向函数 2、散列函数 3、单向散列函数 三、怎么解决完整性问题 四、如何设置合适的安全强度 一、前言:密码学有什么用? 二、单向散列函数 单向散列函数就是用来解决…

哈工大计算机网络传输层协议详解之:可靠数据传输的基本原理

哈工大计算机网络传输层协议详解之:可靠数据传输的基本原理 可靠数据传输原理 什么是可靠? 不错、不丢、不乱 可靠数据传输协议 可靠数据传输对应用层、传输层、链路层都很重要 网络Top-10问题 信道的不可靠特性决定了可靠数据传输协议(rdt)的复杂性…

【最全】如何不写代码将 Dicom 图像转 Nifti 格式, 7种工具任你选!

大多数医学成像设备以复杂的 DICOM 格式(后缀 .dcm)的变体存储图像。许多科学工具希望医学图像以更简单的 NIfTI 格式(后缀 nii.gz)存储。事实上,我们做深度学习基本都是使用的 nii.gz 格式或者 nii 格式。 那么,如何将 dicom 格…

一文吃透 CSS Flex 布局

原文链接:一文吃透 CSS Flex 布局 教学游戏 这里有两个小游戏,可用来练习 flex 布局。 塔防游戏 送小青蛙回家 Flexbox 概述 Flexbox 布局也叫 Flex 布局,弹性盒子布局。 它决定了元素如何在页面上排列,使它们能在不同的屏幕…

Mysql索引、事务以及存储引擎

目录 一、索引 1.概述 2.作用 3.索引的缺点 4.创建索引的原则依据 5.索引分类和创建 5.1普通索引 5.2唯一索引 5.3主键索引 5.4组合索引(单列索引与多列索引) 5.5全文索引(FULLTEXT) 6.查看索引 7.删除索引 二、事务…

测试必会技能之接口性能测试方案你会不会写?

目录 一、 性能测试术语解释 二、 性能测试方法及目标 三、 性能需求分析 四、 性能测试范围 五、 并发数计算方法 六、 性能测试用例与场景 七、 性能测试工具选择 八、 性能测试结果分析 九、 性能测试通过标准 总结: 一、 性能测试术语解释 …

腾讯云服务器可用区什么意思?

腾讯云服务器可用区什么意思?可用区(Zone)是指腾讯云在同一地域内电力和网络互相独立的物理数据中心,一个可用区故障不会影响另一个可用区的正常运行,所以可用区用于构建高容灾、高可靠性应用。腾讯云服务器网来详细说…

java为什么不支持多继承

Java为什么不支持多继承 前面我们提到过“继承则好比武侠中的传承血脉,子类可以继承父类的属性和方法,并且可以根据需要进行自我扩展,这样就不用从头造轮子,提高了代码的重用性和可维护性。”,在java中支持接口实现多继…

龙芯电脑(LoongArch)如何升级BIOS(UEFI固件)

龙芯UEFI 获取地址(包括3A5000 台式机,笔记本,3C5000 服务器): gitee: https://gitee.com/loongson/Firmware github: https://github.com/loongson/Firmware 根据自身机型选择相应的固件(Image目录有相…

第七章——微分方程

注://之后的都是注释,不是过程。 一、求常系数线性齐次微分方程的通解 1.一般形式:ypyqy0。 2.齐次:“齐次”的含义就是次数相等,ypyqy0都是一次幂,所以是齐次线性微分方程,如果说加上一个常…

有理函数积分

有理函数积分,一共分为三步: ①有理函数拆分 ②求待定系数 ③积分 一、有理函数拆分 有理函数拆分就是需要把被积函数拆开成若干项简单真分式相加。 (真分式:分子最高次幂<分母最高次幂) 简单真分式&#x…

自定义注解实现数据脱敏

自定义注解实现数据脱敏 在实际开发中经常会遇到有一些信息不能全部展示用户,需要隐藏(可以叫脱敏)一部分的情况比如地址,电话,手机号,身份证等。 脱敏的做法目前我知道的方法有: 1)…

JMeter 性能测试基本过程及示例,希望可以帮到你

目录 jmeter 为性能测试提供了一下特色: 基本过程 总结 jmeter 为性能测试提供了一下特色: jmeter 可以对测试静态资源(例如 js、html 等)以及动态资源(例如 php、jsp、ajax 等等)进行性能测试 jmeter 可…

(CVPR-2014)DeepPose:通过深度神经网络进行人体姿态估计

DeepPose:通过深度神经网络进行人体姿态估计 论文题目:DeepPose: Human Pose Estimation via Deep Neural Networks 论文是谷歌发表在CVPR 2014的工作 论文地址 Abstract 我们提出了一种基于深度神经网络 (DNN) 的人体姿态估计方法。姿势估计被表述为基…

202318读书笔记|《芭蕉·芜村·一茶:俳句三圣新译300》——樱花——让一整个春夜亮起来!

202318读书笔记|《芭蕉芜村一茶:俳句三圣新译300》——樱花——让一整个春夜亮起来! 《芭蕉芜村一茶:俳句三圣新译300》诗歌,词,短歌,俳句我都喜欢,读起来轻松明快! 松尾…

【代码实验】YOLO V7利用pycocotools进行评估时的一些问题

文章目录 一、无法使用pycocotools进行评估二、使用pycocotools计算的结果与YOLO自身的mAP差异较大的原因 一、无法使用pycocotools进行评估 yolov7有自己的计算mAP方式,但是在使用pycocotools进行test时,出现了pycocotools unable to run: Results do …

Java关键词synchronized

目录 一、通过卖票系统观察多线程的安全隐患 二、synchronized的基本知识 1.使用synchronized的原因 2.synchronized的作用 3.synchronized的基本格式 a.synchronized加在方法名前 b.synchronized用在方法中 4. Java锁机制 5.synchronized注意事项 三、使用synchronize…