百度360必应搜狗淘宝本站头条
当前位置:网站首页 > 热门文章 > 正文

别再问我postman如何使用了,看这篇就行

bigegpt 2025-02-04 12:49 8 浏览

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件

一、设置postman主题

右上角的设置里可以设置postman的主题


这里,出于个人习惯,我把它设置成了黑色

二、postman基础功能介绍

首先,看一下它的基础功能:


collection在postman里面相当于一个文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里面也可以再建文件夹。这里我们做一个普通接口的简单的示例:

新建一个文件夹


创建一个文件集


新建一个请求


给这接口明明为查询上海天气并保存

点击该请求,现在是空白的


输入一个get请求,params里会自动显示参数

该请求是聚合数据提供的一个查询天气的接口,大概还有几百次的次数可以用:

http://v.juhe.cn/weather/index?format=2&cityname=南京&key=64aa04d276d1ed4fd5a147d97e16b87e

点击send,查询成功


成功查询到上海天气

这样就完成了一次简单的天气查询接口的请求

三、请求区域介绍

1 Authorization:身份验证,主要用来填写用户名密码,以及一些验签字段,postman有一个helpers可以帮助我们简化一些重复和复杂的任务。当前的一套helpers可以帮助你解决一些authentication protocols的问题。;

2 Headers:请求的头部信息

3 Body:post请求时必须要带的参数,里面放一些key-value键值对

4 Pre-requerst Script:可以让你在 请求之前自定义请求数据,这个运行在请求之前,语法使用JavaScript语句。

5 tests:tests标签功能比较强大,通常用来写测试,它是运行在请求之后。支持JavaScript语法。postman每次执行request的时候,会执行tests。测试结果会在tests的tab上面显示一个通过的数量以及对错情况。这个后面会进行详解,它也可以用来设计用例,比如要测试返回结果是否含有某一字符串

6 form-data:,它将表单数据处理为一条消息,以标签为单元,用分隔符分开。既可以单独上传键值对,也可以直接上传文件(当上传字段是文件时,会有Content-Type来说明文件类型,但该文件不会作为历史保存,只能在每次需要发送请求的时候,重新添加文件。);post请求里较常用的一种

上传文件

7 x-www-form-urlencoded:对应信息头-application/x-www-from-urlencoded,会将表单内的数据转换为键值对;

8 raw:可以上传任意类型的文本,比如text、json、xml等,所有填写的text都会随着请求发送;

9 binary:对应信息头-Content-Type:application/octet-stream,只能上传二进制文件,且没有键值对,一次只能上传一个文件, 也不能保存历史,每次选择文件,提交;

四、导出和导入接口集:

postman支持非常方便的导入和导出接口集,继续操作如下:

导出



数据一般以postman_collection.json结尾

导入




为了区分,我把他们名称改了

ok,这样就是简单的导入导出collection集合

五、关于设置环境变量:

  1. Global---全局
  2. Enviroment --- 环境变量
  3. Local --- 局部
  4. Data ---- 数据

优先级从高到底 Data ---- > Local ---- > Enviroment ---- > Global

postman支持很方便的设置环境变量以及全局变量,并可以一键切换不同环境


  1. 可以一键切换环境,选择No Environment则不使用环境变量,仅适用全局变量
  2. 可以查看当前环境中的变量和全局变量(Globals)的值


  1. 进入设置页面


如新建一套环境dome


选择我们刚才创建的环境,点击眼睛可以看到我们设置的变量值


创建环境变量能够很方便的调取我们所需的数据

六、将返回值的某个数据设置为环境变量

在某些时候,我们需要获取到一个变量,并保存下来,因为在后面我们会使用到。比如token,sign等信息

这时候就需要用到tests区域了,使用其强大的js语法

下面是一个简单的将返回值的某个数据设置为环境变量或者全局变量的介绍:

定义一个xxx,获取body中返回的所有参数,并转化为JSON格式 var xxx = JSON.parse(responseBody);

//把json字符串转化为对象。parse()会进行json格式的检查是一个安全的函数, 如:检查json中某个数组元素的个数(这里检测programs的长度)

var data = JSON.parse(responseBody);tests["program's lenght"] = data.programs.length === 5;

将返回中的值设置为一个环境变量 pm.environment.set("key",xxx.data.value);或者postman.setEnvironmentVariable("key", "value");

将返回中的值设置为一个全局变量, pm.globals.set("key",xxx.data.value);或者postman.setGlobalVariable("key", "value");

//注意:Global后面不能加S,value值一定要指定到某个具体节点

实际操作一下:

一个微信登录的接口token值获取


这是一个微信登录的接口,属于post方法,里面的必须参数是unionid,这里我已经把unionid填在body里了,点击send下面可以得到一个token

该登录token每次请求的值都是不一样的,属于一个动态值。而后面我们的所有接口请求都需要这个token,现在就可以使用tests将它放置在环境变量里


var acquiretoken = JSON.parse(responseBody);

//定义一个acquiretoken方法(获取token),把responseBody转为json字符串

pm.environment.set("token",acquiretoken.data.token);

//将token变量放置到当前环境变量里去

再次执行send后,点击右上角小眼睛

发现变量就储存在了dome的环境变量里,每次点击send进行请求,发现环境变量里token都会随着结果变化而变化。

同理,全局变量统一可以这样设置

在设置过变量后,调用变量的时候,在postman里也比较方便,直接使用{{变量名}}就可以了,

加入我们在body里需要一个token值,那么我们可以直接在引用在环境变量里储存的token,例如:


引用变量的时候会有一定的提示


变颜色代表引入变量成功

上面的效果和下面这种把一点点输入的的效果是一样的!


七、其他的常用tests方法:

在postman里,内置了一些常用的方法:


可以很方便的调用

下面我也整理了一些常用的tests方法,分享给大家

测试response Headers中的某个元素是否存在 tests["元素Content-Type是否存在"] = postman.getResponseHeader("Content-Type");

//getResponseHeader()方法会返回header的值;

定义一个xxx,获取headers值 var.xxx = postman.getResponseHeader("key");

将Headers中的值设置为一个环境变量 postman.setEnvironmentVariable("key",xxx);或者pm.environment.set("key",xxx);

检查response的code值是否为200 tests["Status code is 200"] = responseCode.code === 200;

// tests["Status code is 200"]中的tests是一个内置对象,

tests["Status code is 200"]是指为这个断言起个名称叫”Status code is 200”,这个名称可以自行修改。

responseCode.code === 200中的responseCode是内置对象,responseCode对象中有个属性是code,是指HTTP状态码的code,判断code是否为200.

综合起来,这句代码的意思是:名称为”Status code is 200”的断言中,判断responseCode对象的code属性值(HTTP状态码)是否为200。

检查response的body中是否包含字符串 tests["Body matches string"] = responseBody.has("type");

// tests["Body matches string"]中的tests是一个内置对象,

tests["Body matches string"]是指为这个断言起个名称叫”Body matches string”,这个名称可以自行修改。

这句代码的意思是:名称为”Body matches string”的断言中判断响应正文中是否包含:type这个字段。type无论是key或者value,只要匹配就可以。多个类型可用“,”分割。

检查Response Body是否等于字符串 tests["测试点"] = responseBody === "Response Body返回的内容";

//这个可以用在接口返回内容为纯字符串时,直接检查整个返回结果的正确性

检查Response time 是否小于200ms tests["Response time 小于200毫秒"] = responseTime < 200;

检查Response time 是否大于200ms tests["Response time 大于200毫秒"] = responseTime > 200;

postman.setNextRequest('Request 4')

// postman.setNextRequest()是一个带有一个参数的函数,它是接下来要运行的请求的名称或ID。往往用来跳转至某个接口,只在运行该集合时有用,单独运行无效

var jsonObject = xml2Json(responseBody);

//转换XML body为JSON对象

设置一个随机数变量 pm.globals.set("type",parseInt(4*Math.random())+1);

//针对不同类型的课程类型,设置一个1到4的随机整数,字段名是type,parselnt 是强制转换为整数

校验接口返回是否有数据 tests["获取第一个结果"] = xxx.content.jieguo[0];

//我的程序设置的是如果当前没有数据,则只返回content[],所以这句断言可以校验,如果content里还有数据,则视为返回不为空

八、使用postman进行接口自动化测试

没错,使用postman也可以进行接口自动化的,是不是很神奇

首先,既然是自动化测试,那么我们肯定需要工具 (Postman) 或者代码能帮我们直接判断结果是否符合预期。那么在接口测试上,大体就两个思路:

判断请求返回的 code 是否符合预期

判断请求返回的内容中是否包含预期的内容(关键字)

接下来我们看看如何利用 Postman 来解决上述的问题

--------------------

这是三个模拟天气的接口集合,点击扩展按钮,找到RUN,进入



这里我们先简单运行一次:

发现,运行成功。里面我每个接口都写了两个tests进行校验字段,所以上面一共有6条tests测试点被测试到,并且是成功的

每个接口里的tests数据如下:


当然,如果想要每次运行不一样的数据,我们需要其他的方法,比如,使用pre-requestScprit功能,导入或者生成随机数据进行测试,这个后续我再进行讲解

来源:jianshu.com/p/97ba64888894


相关推荐

【Docker 新手入门指南】第十章:Dockerfile

Dockerfile是Docker镜像构建的核心配置文件,通过预定义的指令集实现镜像的自动化构建。以下从核心概念、指令详解、最佳实践三方面展开说明,帮助你系统掌握Dockerfile的使用逻...

Windows下最简单的ESP8266_ROTS_ESP-IDF环境搭建与腾讯云SDK编译

前言其实也没啥可说的,只是我感觉ESP-IDF对新手来说很不友好,很容易踩坑,尤其是对业余DIY爱好者搭建环境非常困难,即使有官方文档,或者网上的其他文档,但是还是很容易踩坑,多研究,记住两点就行了,...

python虚拟环境迁移(python虚拟环境conda)

主机A的虚拟环境向主机B迁移。前提条件:主机A和主机B已经安装了virtualenv1.主机A操作如下虚拟环境目录:venv进入虚拟环境:sourcevenv/bin/active(1)记录虚拟环...

Python爬虫进阶教程(二):线程、协程

简介线程线程也叫轻量级进程,它是一个基本的CPU执行单元,也是程序执行过程中的最小单元,由线程ID、程序计数器、寄存器集合和堆栈共同组成。线程的引入减小了程序并发执行时的开销,提高了操作系统的并发性能...

基于网络安全的Docker逃逸(docker)

如何判断当前机器是否为Docker容器环境Metasploit中的checkcontainer模块、(判断是否为虚拟机,checkvm模块)搭配学习教程1.检查根目录下是否存在.dockerenv文...

Python编程语言被纳入浙江高考,小学生都开始学了

今年9月份开始的新学期,浙江省三到九年级信息技术课将同步替换新教材。其中,新初二将新增Python编程课程内容。新高一信息技术编程语言由VB替换为Python,大数据、人工智能、程序设计与算法按照教材...

CentOS 7下安装Python 3.10的完整过程

1.安装相应的编译工具yum-ygroupinstall"Developmenttools"yum-yinstallzlib-develbzip2-develope...

如何在Ubuntu 20.04上部署Odoo 14

Odoo是世界上最受欢迎的多合一商务软件。它提供了一系列业务应用程序,包括CRM,网站,电子商务,计费,会计,制造,仓库,项目管理,库存等等,所有这些都无缝集成在一起。Odoo可以通过几种不同的方式进...

Ubuntu 系统安装 PyTorch 全流程指南

当前环境:Ubuntu22.04,显卡为GeForceRTX3080Ti1、下载显卡驱动驱动网站:https://www.nvidia.com/en-us/drivers/根据自己的显卡型号和...

spark+python环境搭建(python 环境搭建)

最近项目需要用到spark大数据相关技术,周末有空spark环境搭起来...目标spark,python运行环境部署在linux服务器个人通过vscode开发通过远程python解释器执行代码准备...

centos7.9安装最新python-3.11.1(centos安装python环境)

centos7.9安装最新python-3.11.1centos7.9默认安装的是python-2.7.5版本,安全扫描时会有很多漏洞,比如:Python命令注入漏洞(CVE-2015-2010...

Linux系统下,五大步骤安装Python

一、下载Python包网上教程大多是通过官方地址进行下载Python的,但由于国内网络环境问题,会导致下载很慢,所以这里建议通过国内镜像进行下载例如:淘宝镜像http://npm.taobao.or...

centos7上安装python3(centos7安装python3.7.2一键脚本)

centos7上默认安装的是python2,要使用python3则需要自行下载源码编译安装。1.安装依赖yum-ygroupinstall"Developmenttools"...

利用本地数据通过微调方式训练 本地DeepSeek-R1 蒸馏模型

网络上相应的教程基本都基于LLaMA-Factory进行,本文章主要顺着相应的教程一步步实现大模型的微调和训练。训练环境:可自行定义,mac、linux或者window之类的均可以,本文以ma...

【法器篇】天啦噜,库崩了没备份(天啦噜是什么意思?)

背景数据库没有做备份,一天突然由于断电或其他原因导致无法启动了,且设置了innodb_force_recovery=6都无法启动,里面的数据怎么才能恢复出来?本例采用解析建表语句+表空间传输的方式进行...