2023版Postman接口测试使用全指南(原来使用 Postman测试API接口如此简单)

下面是一篇详细介绍postman接口测试的文章,如果文章内容不太明白的话, 我建议看看视频版本,更加清洗,更加直观!

最详细的postman接口测试实战教程_哔哩哔哩_bilibili最详细的postman接口测试实战教程共计129条视频,包括:1、Postman之接口测试灵魂考问、2、Postman之接口返回数据和JSON详解、3、Postman之接口测试协议等,UP主更多精彩视频,请关注UP账号。https://www.bilibili.com/video/BV1rh411S7Qp/?spm_id_from=333.337.search-card.all.click

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

Postman背景介绍

用户在开发或者调试网络程序或者是网页B/S模式的程序的时候是需要一些方法来跟踪网页请求的,用户可以使用一些网络的监视工具比如著名的Firebug等网页调试工具。今天给大家介绍的这款网页调试工具不仅可以调试简单的css、html、脚本等简单的网页基本信息,它还可以发送几乎所有类型的HTTP请求!Postman在发送网络HTTP请求方面可以说是Chrome插件类产品中的代表产品之一。

Postman的操作环境

postman适用于不同的操作系统,Postman Mac、Windows X32、Windows X64、Linux系统,还支持postman 浏览器扩展程序、postman chrome应用程序等。

Postman重要提示:

由于2018年初chrome停止对chrome应用程序的支持,你的postman插件可能无法正常使用了。目前chrome应用商店能使用的就是chrome扩展程序和主题背景。
 

一、什么是接口测试?

我们要想知道接口测试怎么做,首先要明白接口测试是什么?一般像系统内的组件接口数据交互测试、不同系统与系统之间的接口数据交互测试等,我们都可以称之为接口测试 !

那么接口测试是怎么来测试接口的呢?

接口测试就是通过接口的不同情况下的输入和与之对用的输出之间的关系,看看是否满足接口规范所规定的功能性、安全性以及性能方面的要求.

简单的说:“接口测试是就是在没有前端页面或者前端还没完成的情况下,代替前端页面或者第三方使用者,来验证后端的接口实现是否符合接口规范。”

二、接口测试流程

1.拿到接口文档。(抓包:F12,fiddler,charles),熟悉接口业务,接口地址,请求参数,请求头信息,请求方式,鉴权方式。
2.编写接口用例编写以及评审。
3.使用接口测试工具执行接口测试。
4.输出接口测试报告。

三、接口测试执行

鉴权码:鉴权你是否有访问此接口的权限的一个字符串码。
获取鉴权码的方式:
        1.有一个专门的获取token鉴权码的接口。
        2.登录之后自动生成token鉴权码。
get请求以?方式传参,多个参数之间用@分隔。
请求的功能页签:


Params:get请求传参 Authorization:是验证是否拥有从服务器访问所需数据的权限。
Headers:请求头。
Body:(post请求传参)
        1.form-data:表单:键值对,还有文件上传。
        2.x-www-form-urlenconded  表单:键值对。
        3.raw:传各种其他类型的参数,比如:Text,Javascript,json,html,xml
        4.binary:用于上传二进制文件。
pre-erquest script:接口请求之前的js脚本。
Tests:接口请求之后的断言(断言接口是否请求成功)
Settings:对请求的设置。
-------------
Cookie:是Postman用于自动管理iCookie关联。
响应的功能页签:

Body:响应内容。
Pretty:json格式,raw:文本格式,proview:网页格式。
Cookie:响应的Cookie信息。
Headers:响应头
TestResults:断言结果
响应状态码:200
响应信息:OK
响应时间和响应字节数
--------------------------------------------------------------------------------------------
Console:控制台,用于接口测试调试。
面试题:
接口测试中get请求和post请求的区别是什么?
1.get请求一般是获取资源,psot请求一般是提交资源。
2.get是通过在地址栏中以?方式传参,多个参数用&分隔,post请求是通过表单传参。
3.post比get安全


四、全局变量和环境变量

全局变量:能够在所有的接口请求里面使用的变量的叫全局变量。
环境变量:环境变量让代码能够在不同的环境下去执行。环境变量其实也是全局变量。
http协议默认端口:80
https协议默认端口:443
 

五、接口关联

 1. 创建一个request请求(响应结果假设是下面的json)

{
    "code": 0,
    "msg": "OK",
    "data": {
        "id": 8036687,
        "account": "XXXX",
        "token": "eyJhbGciOiJIUzUxMiJ9.eyJtZW1iZXJfaWQiOjgwMzY2ODcsImV4cCI6MTU4NzUyNzg0OX0.L7lDiNs70mAZk6yxhAxDwDC95ISNWb-2MXe4dzWMLmDfOzGrgkPvM12jFoEgMYcc3nnvtfWfOpDxYwngDkMtIw"
    }

2. 在Tests中添加JavaScript代码,用来获取鉴权

pm.test("V2", function () {
    //jsonData:响应的所有json信息
    var jsonData = pm.response.json();
    var token = jsonData.data.token;
    //将token值添加到token环境变量中
    pm.environment.set("token",token)
});

2、在需要用到token鉴权的接口中获取登录时添加的环境变量token值

在请求头中添加Authorization属性,属性值为token值

获取环境变量中的token值,用{{}}进行获取

点击send成功运行

六、Postman动态参数 

接口测试中,经常用到上下游接口的依赖关系,下游接口的请求依赖上游接口的响应报文作为入参。

这样就是需要我们捕捉上游接口的响应内容,存储起来作为下游接口请求的入参。

这里举两个例子获取动态参数,分别是xml和json格式的请求

xml传参格式

1、上游接口是获取省份信息、下游接口是通过省份获取城市信息

我们需要在接口请求的test页签下,捕捉上游接口的响应内容,并存起来

方法:
//把xml格式转为json格式---jsonObject
var jsonObject = xml2Json(responseBody);

var js=jsonObject.ArrayOfString.string[27];

postman.setGlobalVariable("province", js);

获取到身份信息,并存在全局变量里面 

2、下游获取城市接口请求带上变量province   格式为{{province}},请求成功并返回数据 

json格式请求

示例:因为充值记录接口中需要用到登录接口返回报文中的信息如下

1.以获取token(JWT)和uid为例

2.在登录接口的tests中写入代码(因为登录接口报文信息中有返回JWT和uid) 

方法
var jsonData = JSON.parse(responseBody);
tests["Your test name"] = jsonData.value === 100;

//获取responseBody---作为一个jsonData变量,然后在取到uid 的值
postman.setGlobalVariable("uid", jsonData.data.user.id);

//获取jwt
postman.setGlobalVariable("jwt", jsonData.data.JWT);

 2、把获取的参数存入全局变量;JWT和uid的地方设置变量{{JWT}}和{{uid}}

3、下游接口请求带上该参数 

七、断言 

1.设置环境变量--Setting an environment variable 

postman.setEnvironmentVariable("key", "value");

2.设置全局变量--Set a global variable

postman.setGlobalVariable("key", "value");

3.检查响应中包含string--Check if response body contains a string

tests["Body matches string"] = responseBody.has("string_you_want_to_search");

4.转化XML格式的响应成JSON对象---Convert XML body to a JSON object

var jsonObject = xml2Json(responseBody);

5.检查响应body中等于指定string--Check if response body is equal to a string

 tests["Body is correct"] = responseBody === "response_body_string";

6.检查JSON某字段值--Check for a JSON value

var data = JSON.parse(responseBody);

tests["Your test name"] = data.value === 100;

7.检查Content-Type是否包含在header返回(大小写不敏感)--Content-Type is present (Case-insensitive checking)

 tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); //Note: the getResponseHeader() method returns the header value, if it exists.

8.检查Content-Type是否包含在header返回(大小写敏感)--Content-Type is present (Case-sensitive)

 tests["Content-Type is present"] = responseHeaders.hasOwnProperty("Content-Type");

9.检查请求耗时时间小于200ms--Response time is less than 200ms

tests["Response time is less than 200ms"] = responseTime < 200;

10.检查Status code为200--Status code is 200

tests["Status code is 200"] = responseCode.code === 200;

11.检查Code name包含指定string--Code name contains a string

 tests["Status code name has string"] = responseCode.name.has("Created");

12.检查成功post的请求status code--Succesful POST request status code

tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

13.为JSON data使用微小验证器--Use TinyValidator for JSON data

var schema = {

 "items": {

 "type": "boolean"

 }

};

var data1 = [true, false];

var data2 = [true, 123]; 

console.log(tv4.error);

tests["Valid Data1"] = tv4.validate(data1, schema);

tests["Valid Data2"] = tv4.validate(data2, schema);

Sample data files 

JSON files are composed of key/value pairs

八、postman用例的批量执行

数据驱动:csv,json
特别注意: 在参数里面取数据文件的值和取全局变量一致,在断言里面取数据文件的值使
用:data["名称"]
csv文件编码格式必须为:UTF-8

九、、必须带请求头的接口的测试方式

例如:百度的搜索就是一个接口

当你不知道用哪些请求头的时候,可以采取抓包的方式

Host:请求的主机地址

connection keep-alive  连接方式 保持活跃

Accept-Encoding: gzip, deflate, br   客户端接收的数据压缩方式

Accept-Language: zh-CN,zh;q=0.9,en;q=0.8 客户端接收的数据编码格式

cookie:请求的cookie信息  

is_referer: 百度一下,你就知道

is_xhr: 1

Referer: 来源

sec-ch-ua: " Not A;Brand";v="99", "Chromium";v="98", "Google Chrome";v="98"

sec-ch-ua-mobile: ?0

sec-ch-ua-platform: "Windows"

Sec-Fetch-Dest: empty

Sec-Fetch-Mode: cors

Sec-Fetch-Site: same-origin

User-Agent: Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/98.0.4758.81 Safari/537.36      请求的客户端的类型(模拟浏览器的请求)

X-Requested-With: 异步请求

Content -Type   请求的是数据类型

form-data: Content-Type:multipart/form-data  表单文件上传

x-www-from-urlencoded: Content-Type x-www-from-urlencoded  表单提交

raw:                               Content-Type    application/json  根据你选择的数据类型来决定

binary                           Content-Type        binary  二进制文件

十、接口MOCK

使用场景:前后端分离,后端的接口数据没有出来,前端需要调用后的接口实现业务,为了
保证我们前端能够正常的开发以及测试,那么就需要使用MOCK,模拟桩。模拟一个接
 

十一、Postman接口测试之Cookie鉴权。

概念

Cookie和鉴权的区别,cookie一般指缓存在本地的数据;鉴权一般指验证用户是否拥有访问系统的权利

鉴权分类

  1. Basic auth:基础鉴权,数据没有加密可明文显示,一般在测试环境使用,不在线上环境使用
  2. Oauth 2.0:并且包含了第三方登录方式,例如微博、微信、QQ等使用第三方账号进行授权登录)
  3. DigestAuth:对用户名和密码进行加密
  4. token basic authorization:目前在app端常用的是token basic authorization,就是服务端返回token给app端,app端每次请求的时候,带上对应的token去访问,token正确的时候,则服务端允许其正确访问

Postman提供了关于鉴权的demo如下:

Basic-auth/digestauth

直接打开接口地址https://postman-echo.com/basic-auth 或 https://postman-echo.com/digest-auth ,会弹出登录框,如图:不同的是basix-auth的用户名和密码是明文传递的,容易被人劫持;而digestauth的是加密传递

Oauth 2.0

讲basic auth的type改成Oauth 2.0,然后根据引导设置即可 

 十二、加密解密

前的市面上有哪些加密的方式:

1.对称式的加密方式(私钥加密):不常用DES和AES,已经别淘汰了。

Base64加密:

//base64加密方式:  
var username = CryptoJS.enc.Utf8.parse("admin");//转为utf‐8  
var base64_username = CryptoJS.enc.Base64.stringify(username);//转为Base64 加密
console.log(base64_username);

Base64解密: 

//base64解密方式: 
var username = CryptoJS.enc.Base64.parse("YWRtaW4=");//解密
var new_username = username.toString(CryptoJS.enc.Utf8);//转为utf‐8
console.log(new_username)

2.非对称的加密方式(双钥《公钥和私钥》加密):RSA加密方式
由一个密码生成的双钥,公钥加密,私钥解密。私钥加密,公钥解密
3.只加密不解密
1.MD5加密。

//MD5加密
var new_username2 = CryptoJS.MD5("admin").toString().toUpperCase();
console.log(new_username2)

2.SHA1,SHA3,SHAN........
混合加密(最定义加密规则):
快分期:贷款业务。加密都是自定义的混合加密。
admin,base64(YWRtaW4=),YWRtaW4=+DFJK/模块名首字母,MD5加密。
 

今天的文章就到这里哈。

下一篇文章:postman+newman+jenkins实现持续集成,想了解的可以关注一波  

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

ToBeWritten之ARM汇编基础铺垫

也许每个人出生的时候都以为这世界都是为他一个人而存在的&#xff0c;当他发现自己错的时候&#xff0c;他便开始长大 少走了弯路&#xff0c;也就错过了风景&#xff0c;无论如何&#xff0c;感谢经历 转移发布平台通知&#xff1a;将不再在CSDN博客发布新文章&#xff0c;敬…

FPGA解码4line MIPI视频 IMX291/IMX290摄像头采集 提供工程源码和技术支持

目录1、前言2、Xilinx官方主推的MIPI解码方案3、我已有的MIPI解码方案4、纯Vhdl代码解码MIPI5、vivado工程介绍6、上板调试验证7、福利&#xff1a;工程代码的获取1、前言 FPGA图像采集领域目前协议最复杂、技术难度最高的应该就是MIPI协议了&#xff0c;MIPI解码难度之高&…

关键词采集软件在SEO优化中的应用与效果

搜索引擎的优化被广泛认为是提高网站排名和在线可见性的重要方法之一。SEO人员需要进行大量的工作以确保网站的内容和标签可以被搜索引擎正确地解析和索引。在这项任务中&#xff0c;使用搜索引擎关键词采集软件可以帮助SEO人员完成许多繁琐的任务并简化他们的工作流程。在本文…

Linux 基础IO(Input与output)学习

进程间通信&#xff1a;讲的是操作系统为用户提供的几种进程间的通信方式概念&#xff1a;进程间通信其实就是多个进程之间进行数据交互问题&#xff1a;进程间通信为什么不能直接进行数据交互&#xff0c;需要使用系统提供的方式&#xff1f;原因&#xff1a;进程之间是具有独…

电动力学问题中的Matlab可视化

电磁场的经典描述 小说一则 电磁场的经典描述就是没有啥玩意量子力学的经典电动力学下对电磁场的描述,以后有空写个科幻小说,写啥呢,就写有天张三遇见了一个外星人,外星人来自这样一个星球,星球上的物质密度特别低,导致外星人的测量会明显的影响物质的运动,外星人不能同时得到…

JNI 调用

简介 JNI是Java Native Interface的缩写&#xff0c;通过使用 Java本地接口书写程序&#xff0c;可以确保代码在不同的平台上方便移植。从Java1.1开始&#xff0c;JNI标准成为java平台的一部分&#xff0c;它允许Java代码和其他语言写的代码进行交互。 本地代码与 Java 虚拟机…

【ChatGPT】ChatGPT-5 强到什么地步?

Yan-英杰的主页 悟已往之不谏 知来者之可追 C程序员&#xff0c;2024届电子信息研究生 目录 ChatGPT-5 强到什么地步&#xff1f; 技术 深度学习模型的升级 更好的预测能力 自适应学习能力 特点 语言理解能力更强 自我修正和优化 更广泛的应用领域 应用 对话系统 智能写作…

【机器学习】吴恩达机器学习Deeplearning.ai

机器学习已经强大到可以独立成为人工智能的一个子领域。 可以通过对机器编程实现比如执行网络搜索、理解人类语言、通过x光诊断疾病&#xff0c;或制造自动驾驶汽车。 机器学习定义 一般来说&#xff0c;给一个算法学习的机会越多&#xff0c;它的表现就越好。 机器学习的两种…

阿里云5、6代云服务器实例免费升级至第7代(不限次数)

简介&#xff1a; 阿里云推出云服务器实例免费升级至第7代优惠活动&#xff0c;第5、&#xff16;代云服务器&#xff0c;可享受实例部分免费升级至第7代实例&#xff0c;让你的云服务器拥有更高的安全、存储、网络等性能。 阿里云服务器升级有优惠吗&#xff1f;当然是有的&am…

长安信托:拥抱数字信托,探索多项目管理新路径

长安信托&#xff1a;公司使用 ONES 已经 2 年了。ONES 最大的优势是能够有效串联我司信息科技研发过程中的各个环节&#xff0c;从需求管理到研发任务跟踪&#xff0c;再到测试管理&#xff0c;ONES 能明确地展示出业务部门从需求提出到研发上线的全链路&#xff0c;体现信息科…

免费ChatGPT接入-国内怎么玩chatGPT

免费ChatGPT中文版 OpenAI 的 GPT 模型目前并不提供中文版的免费使用&#xff0c;但是有许多机器学习平台和第三方服务提供商也提供了基于 GPT 技术的中文版模型和 API。下面是一些常见的免费中文版 ChatGPT&#xff1a; Hugging Face&#xff1a;Hugging Face 是一个开源社区…

后缀为whl的文件是什么?如何安装whl文件?学习一下(22)

小朋友们好&#xff0c;大朋友们好&#xff01; 我是猫妹&#xff0c;一名爱上Python编程的小学生。 欢迎和猫妹一起&#xff0c;趣味学Python。 今日主题 了解并使用Pyhton的库安装包文件whl。 什么是whl文件 whl格式本质上是一个压缩包&#xff0c;里面包含了py文件&am…

chatGPA的主要功能-chatGPT深度分析

ChatGPT功能介绍 ChatGPT是基于深度学习技术的自然语言处理算法&#xff0c;其主要用途是生成自然语言文本&#xff0c;能够应用于多个自然语言处理任务。以下是其主要功能介绍&#xff1a; 文本生成&#xff1a;ChatGPT能够生成高质量的自然语言文本&#xff0c;可以应用于大…

linux常用系统管理经验谈

Lab1 硬件和安装 步骤一&#xff1a;准备计算机 任务&#xff1a; 使用Red Hat Linux光盘启动系统 在启动时进入BIOS界面 设置系统启动顺序为A&#xff0c;CDROM&#xff0c;C 修改其他任何推荐的设置 保存并退出BIOS设置 步骤二&#xff1a;使用Anaconda&#xff08;图形模式…

二十分钟带你了解JVM性能调优与实战进阶

ZGC 诞生原因 Java生态非常强大&#xff0c;但还不够&#xff0c;有些场景仍处于劣势&#xff0c;而ZGC的出现可以让Java语言抢占其他语言的某些特定领域市场。比如 谷歌主导的Android手机系统显示卡顿。证券交易市场&#xff0c;实时性要求非常高&#xff0c;目前主要是C主…

阿里云版GPT官宣,我们问了它10个问题

4月7日&#xff0c;阿里云宣布自研大模型“通义千问”&#xff0c;目前已开始邀请用户测试体验。 阿里达摩院在NLP自然语言处理等前沿科研领域早已布局多年&#xff0c;并于2019年启动大模型研发&#xff0c;通义千问便是其最新成果&#xff0c;相当于阿里云版的“ChatGPT”。 …

EPICS synApps SSCAN模块

1、在这个模块中有什么&#xff1f; 1&#xff09;代码 sscan记录busy记录recDynLink库saveData数据存储客户端scanparm记录 2&#xff09;EPICS数据库 scan数据库scanParms和alignParms数据库 3&#xff09;MEDM显示窗口 scan*.adlscan*_help.adl2、简单扫描 1&#xff0…

Linux系统【Centos7】设置防火墙教程

1. 查看防火墙状态 在终端输入以下命令&#xff1a; systemctl status firewalld 如果状态显示为“active”说明防火墙已经启动&#xff1b;如果状态显示为“inactive”说明防火墙没有启动。 2. 启动防火墙 在终端输入以下命令&#xff1a; systemctl start firewalld 3…

vue3自定义实现可过滤关键字的树形下拉选择框

背景 最近项目中有一个部门选择需求&#xff0c;一开始是用element-plus的级联下拉写的&#xff0c;但是由于层级过深&#xff0c;会出现级联下拉超出屏幕的情况&#xff0c;所以改用树形下拉&#xff0c;但是element没有相关组件&#xff0c;现记录下vue3js自定义实现可以根据…

Vector - CAPL - CRC算法介绍(续)

不常用CRC算法 目录 Crc_CalculateCRC8H2F 代码示例 Crc_CalculateCRC32P4 代码示例 Crc_CalculateCRC64 代码示例 Crc_CalculateCRC8H2F 功能&#xff1a;根据数据计算CRC8H2F的相应校验和。 data&#xff1a;待计算CRC8H2F校验和的数据 dataSize&#xff1a;待计算CRC…