postman学习笔记:从入门到精通

news2024/11/15 13:29:26

postman入门到精通

  • 一、postman下载安装与更换主题
    • 1、下载与安装
    • 2、更换主题(Themes)
  • 二、页面详解
    • 1、顶部工具栏
    • 2、左侧栏
    • 3、中部栏
      • 3.1 请求部分页签介绍
      • 3.2 响应部分页签介绍
  • 三、管理用例
  • 四、设置环境变量和全局变量
    • 1、添加环境变量
    • 2、添加全局变量
  • 五、发送请求
    • 1、发送一个get请求
    • 2、发送一个post请求
  • 六、接口关联
    • 1、JSON提取器(响应body中提取)
    • 2、正则表达式提取器(响应body中提取)
    • 3、从响应头中去提取
    • 4、从响应Cookie中去提取
  • 七、postman动态参数
    • 1、内置动态参数
    • 2、自定义动态参数
  • 八、postman断言
  • 九、Postman+newman+jenkins实现自动生成报告并持续集成

一、postman下载安装与更换主题

1、下载与安装

下载地址:https://www.postman.com/downloads/

下载适合自己的版本
在这里插入图片描述
下载后图标
在这里插入图片描述

2、更换主题(Themes)

打开后页面:
在这里插入图片描述

更换主题:选择自己喜欢的明色或者暗色系
在这里插入图片描述
在这里插入图片描述

二、页面详解

1、顶部工具栏

在这里插入图片描述

  • 搜索
    在这里插入图片描述

  • 同步数据(Sync)
    在这里插入图片描述

  • 【invite】邀请加入团队

  • 抓取API请求
    在这里插入图片描述

  • 【Sign In】登录

  • 【Runner】运行用例
    在这里插入图片描述

2、左侧栏

在这里插入图片描述

  • 【New】新建

在这里插入图片描述

  • 【import】导入
    在这里插入图片描述

  • 【Collections】集合:用来管理用例

3、中部栏

3.1 请求部分页签介绍

在这里插入图片描述

接口来源于聚合数据,点击此处查看

  • 请求方式

在这里插入图片描述

  • 接口地址
    在这里插入图片描述

  • send: 发送请求

  • Params:get请求传参
    在这里插入图片描述

注:Bulk Edit 批量编辑

在这里插入图片描述

  • Authorization:认证鉴权
    在这里插入图片描述

  • Headers:请求头
    在这里插入图片描述
    注:如使用post请求方式,请求头(Headers)要加入content-type参数

  • Body:post请求传参

1、none:没有参数
在这里插入图片描述

2、form-data:传文件和键值对
在这里插入图片描述
注:Content-Type与请求参数的格式之间的关联

当选择某一参数方式后,postman会自动帮我们设置对应的Content-Type,不需要自行设置,而如果是使用jmeter还是需要自行设置Content-Type。

所以,当选择form-data的参数方式后,postman会自动的帮我们设置了Content-Type:multipart/form-data

3、x-www-form-urlencoded :传键值对
在这里插入图片描述
当选择x-www-form-urlencoded的参数方式后,postman会自动的帮我们设置了Content-Type:application/x-www-form-urlencoded

4、raw:可以上传任意格式的文本,可以上传text、json、xml等

在这里插入图片描述

当我们选择了text时,postman同样帮我们自动设置了Content-Type:text/plain,可自行查看Headers

在这里插入图片描述

当我们选择了JSON时,postman同样帮我们自动设置了Content-Type:application/json,可自行查看Headers
在这里插入图片描述

当我们选择了XML时,postman同样帮我们自动设置了Content-Type:text/xml,可自行查看Headers

5、binary:只可以上传二进制数据,通常用来上传文件,一次只能上传一个文件
在这里插入图片描述
6、GraphQL:发送GraphQL查询
在这里插入图片描述

  • Scripts

Pre-request :预请求脚本

Post-response:请求后置脚本/请求后的脚本处理/断言

在这里插入图片描述

  • Setting:设置
  • Cookies:Postman的cookie的管理器
    在这里插入图片描述

3.2 响应部分页签介绍

在这里插入图片描述

Body:响应的数据(Pretty:json格式,Raw:文本格式,Preview:网页格式)

Cookies:缓存

Headers:响应头

Test Results:断言的结果

Status:200返回码

OK:返回信息

Time:响应时间 588ms(毫秒)

Size:2.7KB

三、管理用例

四、设置环境变量和全局变量

全局变量:就是在所有接口请求里面都可以访问的变量
环境变量:就是全局变量。(开发环境,测试环境,线上环境)

1、添加环境变量

在这里插入图片描述
在这里插入图片描述
例如:

开发环境:ip:略

测试环境:ip:略

生产环境:ip:http://apis.juhe.cn/fapig/football/query

在这里插入图片描述
引用方式为:{{变量名}}
在这里插入图片描述

在运行时:选择相应的环境变量
在这里插入图片描述

2、添加全局变量

步骤同环境变量,不再赘述
在这里插入图片描述

五、发送请求

1、发送一个get请求

接口文档:

在这里插入图片描述

根据接口文档,我们可以看到,请求方式为get或post,这里使用get方法,填写url并把参数填写到Params中,点击Send后成功发送请求

在这里插入图片描述

2、发送一个post请求

接口文档:
在这里插入图片描述

在这里插入图片描述

六、接口关联

场景:下一个接口的参数是使用的上一个接口的返回值

接口示例:用的是聚合数据的接口,可自行申请
在这里插入图片描述
脚本输入位置
在这里插入图片描述

1、JSON提取器(响应body中提取)

//javascript脚本,var定义变量
// 将响应body里的内容解析为一个json对象(字典),存到变量res中
var res=pm.response.json() ;
//提取响应body中的date值存到全局变量date中
pm.globals.set("date", res.result.matchs[0].date);

执行后,可以看到全局变量中存上了变量date和它的值
在这里插入图片描述

获取全局变量:{{变量名}},如其它接口把date作为入参只需要:{{date}}
接口示例:
在这里插入图片描述

2、正则表达式提取器(响应body中提取)

var dateone = pm.response.text().match(new RegExp('"date":"(.*?)"'));
console.log(dateone[1]);
pm.globals.set("dateone", dateone[1]);

执行后,也可以看到全局变量中存上了变量dateone和它的值
在这里插入图片描述

3、从响应头中去提取

响应头示例:
在这里插入图片描述

// 获取响应头中参数Etag的值
var Etag=pm.response.headers.get("Etag")
// 在控制台输出
console.log(Etag)

控制台可以看到,成功获取Etag的值
在这里插入图片描述

4、从响应Cookie中去提取

响应Cookie示例
在这里插入图片描述

//响应Cookie中提取
var aliyungf_tc=pm.cookies.get("aliyungf_tc")
// 在控制台输出
console.log(aliyungf_tc)

控制台可以看到,成功获取aliyungf_tc的值
在这里插入图片描述

七、postman动态参数

接口测试中常常会出现接口的参数不能写死,必须使用随机数来实现。

1、内置动态参数

{{$timestamp}} 时间戳
{{$randomInt}} 随机的0-1000的整数
{{$guid}} 随机的很长的字符串

2、自定义动态参数

//自定义的时间戳
var times = Date.now();
pm.globals.set("times",times);
//让接口请求停留3秒(3秒灌水机制),time.sleep(3)
const sleep = (milliseconds) => {
const start = Date.now();
while (Date.now() <= start + milliseconds) {}
 };
sleep(3000);

八、postman断言

八种断言方式

1、断言返回码为200 用于状态断言

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

示例:
在这里插入图片描述

2、断言返回的结果中包含一个指定的字符串 用于业务断言

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

在这里插入图片描述

在这里插入图片描述

3、检查返回结果的json字符串的值 用于业务断言

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});

在这里插入图片描述

在这里插入图片描述

4、断言返回的结果等于一个字符串 用于业务断言

pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

5、断言响应头中包含有指定的响应头

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

在这里插入图片描述

在这里插入图片描述

6、断言请求接口的时间小于200ms 用于性能断言

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

在这里插入图片描述

7、断言一个post请求的返回的状态码是否在指定的范围中

pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201, 202]);
});

在这里插入图片描述

8、断言返回的状态码信息中包含指定的字符串

pm.test("Status code name has string", function () {
    pm.response.to.have.status("Created");
});

在这里插入图片描述

每个接口写2个断言,一个状态断言一个业务断言

特别注意:
1.postman内置的动态参数无法做断言。所以必须使用自定义的动态参数。
2.在tests里面不能使用{{}}的方法取全局变量,必须使用以下方式:
pm.globals.get(“times1”)
globals[‘times1’]
globals.times1

精确断言:

先写预置脚本,保存全局变量
在这里插入图片描述
参数中使用全局变量
在这里插入图片描述
断言中使用全局变量
在这里插入图片描述

全局断言:状态断言放到全局断言中,用例里只写业务断言即可
在这里插入图片描述
在这里插入图片描述

九、Postman+newman+jenkins实现自动生成报告并持续集成

未完待续。。。

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

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

相关文章

编码666

unicode&#xff0c;将每种语言的每种格式都用一个二进制编码来表示&#xff0c;1到3个字节 问题&#xff1a;1.系统怎么知道是ASCII还是Unicode编码&#xff0c;怎么直到一个字符是一字节还是多个字节 2.很多字符需要2字节或更多&#xff0c;存储空间的要求会更高 UTF-8&…

AIGC提示词(3):AI的创造力之谜:相同提示词,不同内容

引言 在这个数字化的时代&#xff0c;人工智能生成内容&#xff08;AIGC&#xff09;已经变得无处不在。想象一下&#xff0c;只需输入几个关键词&#xff0c;AI就能创作出各种内容&#xff0c;无论是文字、图片&#xff0c;还是其他形式。但这里有个有趣的问题&#xff1a;如…

简易计算器(源码+程序)

效果演示&#xff1a; 下载地址&#xff1a; 简易计算器&#xff08;源码程序&#xff09;&#xff1a;https://download.csdn.net/download/wgxds/89696805 vb.net开发安卓软件的方法&#xff1a;[原创]vb.net开发安卓软件的方法_vbnet开发安卓-CSDN博客 免费资源下载&#x…

【系统架构师软考】计算机网络知识(四)

目录 奈奎斯特定理 奈奎斯特速率 ​编辑 香农定理 物联网(IOT) ​编辑 TCP 和 UDP HTTP、HTTPS 和 WebSocket ICMP、IGMP、OSPF协议 SNMP ​编辑 DHCP协议和DNS协议 ​编辑 RAP和ARAP TFTP、FTP和 SFTP POP3, IMAP,SMTP 其他网络协议 无线网络协议 IP地址的格…

【Android】MotionLayout实现动画效果

【Android】MotionLayout实现开场动画 在移动应用开发中&#xff0c;动画不仅仅是美化界面的工具&#xff0c;它更是提升用户体验的关键手段。Android 平台一直以来都提供了丰富的动画框架&#xff0c;但随着应用复杂性的增加&#xff0c;开发者对动画的需求也变得更加复杂和多…

【Navicat最新版简体中文版破解激活永久详细教程】

2024 Navicat Premium最新版简体中文版破解激活永久图文详细教程 1.未安装过的用户可直接跳过该步骤&#xff0c;如果已安装Navicat&#xff0c;记得先卸载干净&#xff0c;防止破解失效&#xff0c;卸载完成后执行补丁压缩包中的Navicat.bat脚本&#xff08;一闪而过表示正常&…

背包问题——分组背包

样题&#xff1a; 枚举第i组选第几个物品 #include <bits/stdc.h> using namespace std; const int N 110; int f[N],w[N][N],v[N][N],s[N];int main() {ios::sync_with_stdio(0),cin.tie(0),cout.tie(0);int n,V,cnt 0; cin >> n >> V;for(int i 1; i &…

HTML爱心流星雨

目录 写在前面 完整代码 代码分析 推荐系列 写在后面 写在前面 如何用HTML代码实现爱心流星雨的动态效果&#xff1f;本期博主将带着大家探索神奇的HTML。 完整代码 <!doctype html> <html> <head><meta charset"utf-8"><title&g…

axios取消请求CancelToken的原理解析及用法示例

文章目录 一、axios的实例与请求流程二、CancelToken 的作用三、CancelToken 的实现原理四、取消请求的流程五、CancelToken用法六、利用拦截器取消请求1、axios请求拦截器2、axios响应拦截器3、利用路由导航守卫取消请求 一、axios的实例与请求流程 下图是axios实例属性的简图…

Scrach游戏制作:时机的活儿~(可自改难度)(免费源码)

游戏演示&#xff1a; 这是个时机di活儿~_哔哩哔哩_bilibili 作品制作流程&#xff1a; 自由移动不断切换造型传送&#xff08;碰撞检测&#xff09;火车&&棒球的旋转增加关卡难度游戏结束 1. 自由移动&#xff08;对猫猫编程&#xff09; 自由移动是让角色能够朝上下…

Camtasia 2024 v2024.0.6 for Mac 中文版 屏幕录像视频录制编辑软件

TechSmith Camtasia for Mac 中文版 是一款专业的屏幕录像及视频录制编辑软件。以业界领先的清晰度重新定义了屏幕录制&#xff0c;将屏幕、摄像头、麦克风和系统音频捕获为独立音轨&#xff0c;实现终极控制和灵活性。通过拖放过渡、标注等功能&#xff0c;以及改进的工作流程…

WCT系列(四):BLASTSyncEngine

WCT系列&#xff08;一&#xff09;&#xff1a;WindowContainerTransaction类详解 WCT系列&#xff08;二&#xff09;&#xff1a;SyncTransactionQueue类详解 WCT系列&#xff08;三&#xff09;&#xff1a;WindowOrganizerController WCT系列&#xff08;四&#xff09;&a…

图片拼图怎么做?4个方法打造具有高级感的拼图作品

被阿勒泰的日落治愈了&#xff0c;旅行中的每一刻都值得珍藏。 这次的阿勒泰之行&#xff0c;我不仅带回了一堆美好的回忆&#xff0c;还有手机里满满的精彩瞬间。从壮丽的山川到静谧的湖泊&#xff0c;从晨曦初现到夜幕降临&#xff0c;每一帧都是大自然的馈赠。但是&#xf…

C++ 设计模式——职责链模式

目录 C 设计模式——职责链模式1. 主要组成成分2. 逐步构建职责链模式步骤1&#xff1a;定义处理者接口步骤2&#xff1a;定义抽象处理者步骤3: 创建具体处理者步骤4: 配置职责链 3. 备忘录模式 UML 图UML 图解析 4. 单纯与非单纯的职责链模式4.1 敏感词过滤器父类4.2 具体过滤…

C++:类的定义、实例化

目录 一、类的定义 1.1 类的定义格式 1.2 访问限定符 1.3 类域 二、实例化 2.1 实例化概念 2.2 对象大小 一、类的定义 1.1 类的定义格式 • class为定义类的关键字&#xff0c;Stack为类的名字&#xff0c;{}中为类的主体&#xff0c;注意类定义结束时后面分号不能省…

设备上的实时自定义手势识别

这篇论文的标题是《On-device Real-time Custom Hand Gesture Recognition》&#xff0c;主要研究了如何在移动设备上实时识别自定义手势。以下是论文的主要内容概述&#xff1a; 摘要&#xff1a; 论文指出现有的手势识别系统大多限于预定义的手势集&#xff0c;但用户和开发…

鸿蒙(HarmonyOS)常见的三种弹窗方式

最近有一个想法&#xff0c;做一个针对鸿蒙官方API的工具箱项目&#xff0c;介绍常用的控件&#xff0c;以及在项目中如何使用&#xff0c;今天介绍Harmony中如何实现弹窗功能。 警告弹窗 警告弹窗是一个App中非常常用的弹窗&#xff0c;例如&#xff1a; 删除一条记录&…

帕金森患者在运动时有哪些类型的运动推荐?

帕金森病患者在进行运动时&#xff0c;可以考虑以下几种类型的运动&#xff1a; 有氧运动&#xff1a;如散步、慢跑、爬山、骑自行车、健美操、广场舞等&#xff0c;这些运动有助于改善心肺功能&#xff0c;同时也能提升肌肉力量和灵活性。 柔性运动&#xff1a;包括瑜伽、太极…

<Rust>egui学习之小部件(七):如何在窗口中添加颜色选择器colorpicker部件?

前言 本专栏是关于Rust的GUI库egui的部件讲解及应用实例分析&#xff0c;主要讲解egui的源代码、部件属性、如何应用。 环境配置 系统&#xff1a;windows 平台&#xff1a;visual studio code 语言&#xff1a;rust 库&#xff1a;egui、eframe 概述 本文是本专栏的第七篇博…

笔记整理—内核!启动!

常规启动时&#xff0c;各镜像都在SD卡中的各种分区中&#xff0c;内核放在kernel分区&#xff0c;从SD卡到DDR的连接处&#xff08;内核不需要进行重定位&#xff0c;直接从链接处启动&#xff09;。uboot从sd卡分区读使用movi命令。 使用fastboot指令可以查看分区情况&#x…