API自动化测试利器Postman,帮助你更好地进行 API 自动化测试

news2024/11/17 15:58:02

目录

前言:

一、基本功能

二、测试工具

三、示例


前言:

Postman 是一个易于使用的 API 开发和测试工具,可以在其中快速构建、测试和文档化 Web API。Postman 提供了一个直观的用户界面,可以轻松地创建 HTTP 请求、测试响应、解析数据、存储历史记录等功能。下面介绍 Postman 的主要功能和使用方法,帮助你更好地进行 API 自动化测试。

一、基本功能

Postman的功能在文档中有介绍。不过文档略啰嗦,这里简单介绍一下主界面,入门功能就都提到了。

  1. Collections:在Postman中,Collection类似文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里面也可以再建文件夹。如果做API文档的话,可以每个API对应一条请求,如果要把各种输入都测到的话,就需要每条测试一条请求了。这里我新建了一个example用于介绍整个流程,五个API对应五条请求。这个Collection可以通过;https://www.getpostman.com/collections/c8f98a1120357e0d4a5a导入你自己的Postman中。

  2. 上面的黑字注册是请求的名字,如果有Requestdescription的话会显示在这下面。下面的蓝字是保存起来的请求结果,点击可以载入某次请求的参数和返回值。我会用这个功能给做客户端的同事展示不同情况下的各种返回值。保存请求的按钮在15;

  3. 选择HTTPMethod的地方,各种常见的不常见的非常全;

  4. 请求URL,两层大括号表示这是一个环境变量,可以在16的位置选择当前的environment,环境变量就会被替换成该environment里variable的值;

  5. 点击可以设置URL参数的key和value;

  6. 点击发送请求;

  7. 点击保存请求到Collection,如果要另存为的话,可以点击右边的下箭头;

  8. 设置鉴权参数,可以用OAuth之类的;

  9. 自定义HTTPHeader,有些因为Chrome愿意不能自定义的需要另外装一个插件Interceptor,在16上面一行的卫星那里;

  10. 设置Requestbody,13那里显示的就是body的内容;

  11. 在发起请求之前执行的脚本,例如requestbody里的那两个random变量,就是每次请求之前临时生成的;

  12. 在收到response之后执行的测试,测试的结果会显示在17的位置;

  13. 有四种形式可以选择,form-data主要用于上传文件。x-www-form-urlencoded是表单常用的格式。raw可以用来上传JSON数据;

  14. 返回数据的格式,Pretty可以看到格式化后的JSON,Raw就是未经处理的数据,Preview可以预览HTML页面;

  15. 点击这里把请求保存到2的位置;

  16. 设置environmentvariables和globalvariables,点击右边的x可以快速查看当前的变量;

  17. 测试执行的结果,一共几个测试,通过几个。

这个界面就是免费版的主要内容,和其他API测试工具相比,已经足够好用。如果要使用自动化测试,需要购买9.99美金的Jetpacks,暂时不想购买的话可以试一下Team版Postman。现在是可以免费试用的,不但拥有Jetpacks的功能,还能与其他账户同步Collection。

二、测试工具

测试工具主要包括三部分,在发起请求之前运行的Pre-request,在收到应答之后运行的Test,和一次运行所有请求的CollectionRunner

1.Pre-request

Pre-request的编写界面如下:

Pre-request和Test用的语言都是JavaScript,Postman在一个沙盒里执行代码,提供给用户的库和函数可以在这里查看。而常用的功能都可以通过右边的CodeSnippets实现,点击就可以插入到代码区域。

可以看到Pre-request里常用的功能就两种,设置环境变量和设置全局变量。这条请求的pre-request就是在注册之前生成一个字符串作为随机用户名。

postman.setEnvironmentVariable("random_username",("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4));

其他用法还包括在发起请求之前获取当前的时间戳放在参数里:

postman.setEnvironmentVariable("unixtime_now",Math.round(newDate().getTime()/1000));

当然也可以用来生成校验串。总之,在发请求之前需要手动修改的东西,都可以考虑用脚本自动实现。

2.Test

Test的编写界面如下:

和Pre-request相比,Test的Snippets就丰富多了,例如检查状态码、检查响应串、验证JSON、检查header、限制应答时间。

如果需要将服务器响应的数据保存下来,用在后面的请求里,也需要在这一步做。

在图中的Test里,我首先检查了状态码为200,然后解析返回的JSON,把环境变量里的token设为JSON里的token。

3.CollectionRunner

当编写了很多测试之后,就可以使用CollectionRunner来自动运行整个Collection了,入口就在主界面最上面一行的Runner。选好Collection、Environment,如果有需要还可以载入JSON和CSV作为数据源。点击StartTestRun,就可以看到结果了。

这里可以看到一共发起了5次请求,每个请求各有一个Test,全部Pass。(虽然最后一个请求的返回是403,但是这个请求的期望返回值就是403,所以也是Pass的)

三、示例

最后完整的看一下我用的例程。这个例子是一个非常简单的小系统,用户可以注册并登录,然后在系统里新建充值卡,并给这张卡充值。整个流程如下:

1.注册

生成一个随机字符串作为用户名和昵称

postman.setEnvironmentVariable("random_username",("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4));

发起请求

POST/index.php/usersHTTP/1.1
Host:postmanexample.bayes.cafe
Cache-Control:no-cache
Postman-Token:76791813-aac2-71fb-cad4-3e737f37c4d0
Content-Type:application/x-www-form-urlencoded
username=2mjk&password=123456&nickname=2mjk

运行测试、检查结果

tests["Statuscodeis201"]=responseCode.code===201;

2.登录

直接用刚才生成的环境变量发起请求

POST/index.php/authenticationHTTP/1.1
Host:postmanexample.bayes.cafe
Cache-Control:no-cache
Postman-Token:aac7d0ac-e0e3-ecf2-39da-b8dca672e3d7
Content-Type:application/x-www-form-urlencoded
username=2mjk&password=123456

运行测试、检查结果,并将返回的token记录下来

tests["Statuscodeis200"]=responseCode.code===200;
vardata=JSON.parse(responseBody);
postman.setEnvironmentVariable("token",data.token);

3.添加一张卡

先生成一个卡号和卡名

postman.setEnvironmentVariable("random_cardno",Math.round(Math.random()*9999999));
postman.setEnvironmentVariable("random_cardname",("0000"+(Math.random()*Math.pow(36,4)<<0).toString(36)).slice(-4));

然后发起请求,这里调用了刚才获取到的Token,放在header的自定义字段里作为鉴权(SAE不能用Authorization这个字段,不清楚原因)

POST/index.php/cardsHTTP/1.1
Host:postmanexample.bayes.cafe
X-Authorization:d4c4a0b7b36c73e7a13b7e24a596093b
Cache-Control:no-cache
Postman-Token:d44d573f-f17a-366c-2cd7-1d5b8b709233
Content-Type:application/x-www-form-urlencoded
cardno=1385526&desc=2mo8

运行测试

tests["Statuscodeis200"]=responseCode.code===200;

4.查询刚才生成的卡

发起请求,调用了刚才生成的卡号

GET/index.php/cards/1385526HTTP/1.1
Host:postmanexample.bayes.cafe
Cache-Control:no-cache
Postman-Token:1e5aca57-c3bb-7404-2791-c639cd60b5c8

运行验证,和刚才生成的卡名对比,并记录新卡的ID

vardata=JSON.parse(responseBody);
tests["checkcardname"]=data.desc===environment.random_cardname;
postman.setEnvironmentVariable("new_card_id",data.id);

5.充值

发起请求,使用了刚才获得的新卡ID

POST/index.php/depositHTTP/1.1
Host:postmanexample.bayes.cafe
X-Authorization:d4c4a0b7b36c73e7a13b7e24a596093b
Cache-Control:no-cache
Postman-Token:388c95e0-b5ce-9bbf-5816-084db7523384
Content-Type:application/x-www-form-urlencoded
cardid=1&amount=10

运行验证(由于是新建的用户,没有余额,无法给卡片充值,故返回403Forbidden)

tests["Statuscodeis403"]=responseCode.code===403;

 

 作为一位过来人也是希望大家少走一些弯路,希望能对你带来帮助。(WEB自动化测试、app自动化测试、接口自动化测试、持续集成、自动化测试开发、大厂面试真题、简历模板等等),相信能使你更好的进步!

留【自动化测试】即可【自动化测试交流】:574737577(备注ccc)icon-default.png?t=N4P3http://qm.qq.com/cgi-bin/qm/qr?_wv=1027&k=eSv73sPKaVXpq9JeRq1Kboh1D-w19xXu&authKey=Qs1Sduo9tp2wfkOYvRyyFCoblyT7fBhH4PPisEb1G63n1UckS6wQU50e9ar1LAOz&noverify=0&group_code=574737577

 

 

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

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

相关文章

深入解析XMLHttpRequest:实现异步通信的利器

文章目录 介绍什么是XMLHttpRequest&#xff1f;XMLHttpRequest的基本用法1.创建XMLHttpRequest对象2.配置请求3.发送请求 XMLHttpRequest 属性sendreadyStatestatusstatusTextresponseresponseTextresponseTyperesponseURLtimeoutwithCredentials 异步请求与同步请求请求类型和…

淡季,老手买入的季节。

刚在刷抖音&#xff0c;刷到马云的视频。心里在想&#xff1a;这么大的企业家大富豪怎么会哽咽呢&#xff1f;他缺钱吗&#xff1f;他需要为生存奋斗吗&#xff1f; 他当然不缺钱&#xff0c;也不需要为生存去奋斗。如果以家庭生活支出来算&#xff0c;他的钱够几代儿孙挥霍了。…

漂亮国因一颗气球而疯狂给质量团队带来的启示

最近漂亮国因为我国的一颗漂洋过海的淘气的民用气球而疯狂。这颗气球成功躲过了号称全球最先进的防空系统&#xff0c;跨越大半个漂亮国&#xff0c;直到被一居民拍照无意间发现&#xff0c;漂亮国才反应过来。多次派战斗机拦截无果&#xff0c;在气球降到15km后&#xff0c;F2…

数据链路层之以太网协议基本知识总结分享

目录 1. 以太网协议报文格式 2. MTU是什么?它对哪些协议有影响? 1. 以太网协议报文格式 这里的目的地址不是ip地址,是Mac地址,mac地址是6个字节,比ipv4地址大了2个字节,当前的mac地址是可以让每个设备都是唯一的,且不需要动态分配,一般是网卡出厂就分配好了的.这就代表我们…

【他山之石】基于Echarts表格的时间线(轴)组件触发时间变化事件,带多种方案比较

【他山之石】基于Echarts表格的时间线组件触发时间变化事件 1 背景2 调整思路3 函数监听 1 背景 在开发中遇到一个场景&#xff1a;要展示的数据随着时间的变化发生改变&#xff0c;有以下几点要求的的时间线。 水平方向可以切换时间变化&#xff0c;带播放按钮时间节点背景图…

chatgpt赋能python:Python编程:如何删除前面的代码?

Python编程&#xff1a;如何删除前面的代码&#xff1f; 在Python编程中&#xff0c;我们有时会需要删除之前写的一些代码&#xff0c;以便更好地组织我们的代码结构和逻辑。那么&#xff0c;Python中如何删除前面的代码呢&#xff1f;在本文章中&#xff0c;我们将为您详细介…

python字符串格式化通过占位符拼接

我之前写了python字符串拼接 但我们会发现 它不太好用 第一个 当变量很多的时候 会写的很长 第二个 是python中字符串不能直接和其他类型的变量拼接 字符串格式化 也属于是字符串拼接的一种方法 语法上不是使用加号 我们打开编辑器 编写代码如下 weight 8.70; age 2; name…

Nvidia AGX Orin MAX9296 /MAX9295驱动寄存器配置

MAX9295 配置说明 1.Max9295 的功能及应用 MAX9295 是把 MIPI CSI-2 转化成 GMSL2 或者 GMSL1 信号&#xff0c;该信号是可以通过 15m 长的线缆发送或接受控制数据以及传递 video 数据和双向的控制数据。 GMSL2 有固定的速率&#xff0c;正向的速率为 3Gbps 或者 6Gbps &…

SpringBoot整合Flyway实现数据库的初始化和版本管理

文章目录 一、Flyway1、介绍2、业务痛点3、个人理解 二、SpringBoot整合flyway1、整合2、SQL文件命名3、版本号校验算法4、工作流程5、注意事项 一、Flyway 1、介绍 Flyway 是一款开源的数据库版本管理工具。它可以很方便的在命令行中使用&#xff0c;或者在Java应用程序中引入…

win10无法使用浏览器上网问题总结贴(附带解决办法)

现象 电脑连接WIFI之后&#xff0c;可以登录微信但是一直打不开网页&#xff0c;其它软件也无法联网。 解决办法 重启大法 遇到这种问题通常最简单有效的办法就是&#xff0c;重启电脑&#xff0c;然而在我重启完成之后还是这样无法使用浏览器上网疑难解答 使用win10的疑难解…

【EraAI智能写作助手】一键生成精准文案,让创作更高效

一键生成精准文案&#xff0c;让创作更高效&#xff01; 传送门【EraAI智能助手】&#xff1a; txt.eraai.cn 亲爱的文案创作者和营销人员&#xff0c;您是否常常为文案创作而烦恼&#xff1f;现在&#xff0c;有了EraAI智能助手&#xff0c;让您的创作事半功倍&#xff01;我…

Qt详解实现TCP文件传输例子(文件下载和上传)附源码

网络通信我们用的很频繁&#xff0c;如文字&#xff0c;语音&#xff0c;文件&#xff0c;图片等&#xff0c;这个些传输方式都差不多 QT文件传输主要考验对传输的控制&#xff0c;还是需要点逻辑的&#xff0c;文件传输的大致框架如下 先看一下简单例子实现的效果&#xff08…

【Python】使用pdf2docx库将.pdf转化为.docx

1、使用VS code搭建Python编译环境 2、安装pdf2doc库1 pip install pdf2docx3、编写代码 3.1 使用parse将pdf转化为docx 编写 pdf2docxParse.py from pdf2docx import parse # 文件名 pdf_file demo-image-overlap.pdf docx_file demo-image-overlap.docx# 将pdf转为doc…

vue 3 第三十六章:vite环境变量(.env文件的配置及使用)

文章目录 1. 环境变量使用场景2. 创建.env文件3. 在应用程序中使用环境变量3.1. 输出结果&#xff08;开发环境&#xff09;&#xff1a;3.2. 输出结果&#xff08;生产环境&#xff09;&#xff1a; 4. 在 vite 中使用环境变量 1. 环境变量使用场景 区分不同的环境。在Vite中…

【LeetCode】160. 相交链表

160. 相交链表&#xff08;简单&#xff09; 题解 对于这道题&#xff0c;首先要理解题意&#xff1a;如果两个单链表会相交&#xff0c;那么返回相交的起始节点&#xff1b;否则返回 null。 无需看“自定义评测”部分。 假设链表 A 的头节点到相交点的距离为 a&#xff0c;链…

S32K324芯片学习笔记-Clock

文章目录 Clock详解特征时钟生成MC_CGM mux 0时钟时钟输出概述其他时钟整体框图时钟源芯片时钟源芯片输入时钟芯片输出时钟FIRC快速内部RC振荡器待机模式下的FIRC_CLK行为 SIRC慢速内部RC振荡器待机模式下的SIRC行为 FXOSC快速外部晶振慢速外部晶振PLL锁相环配置PLL配置序列 芯…

QPushButton 基本使用

〇、PyQt 中的 Button 相关类介绍 PyQt 提供了多种按钮类&#xff0c;用于创建各种类型的按钮。这一部分将打算介绍一下 PyQt 各种 Button 及相关类&#xff0c;并扩展 Button 的功能用法&#xff0c;让你能够打造自己的个性化 Button 。在下面&#xff0c;我先来介绍 PyQt 中…

数据库系统理论 -- 关系查询处理和查询优化

本篇文章会先介绍数据库的查询处理&#xff0c;然后介绍数据库的查询优化。其中查询优化分为代数优化和物理优化。代数优化是指关系表达式的优化&#xff0c;物理优化是指通过存取路径和底层操作算法的选择进行优化。 查询处理 查询分析查询检查查询优化查询执行 查询分析 …

JNI开发Tips

异常的检测和打印&#xff1a; c中Native代码调用JNI的时候如果产生了异常不会展开原生堆栈&#xff1a; 所以在cJNI调用的时候构造一个FindClass时找不到类的异常&#xff0c;我们看到的实际的崩溃堆栈会是下面的样子&#xff0c;看不到c层代码的调用链路&#xff1a; 在JNI…

【Reids】搭建主从集群以及主从数据同步原理

目录 一、搭建主从集群 1、介绍 2、搭建 二、数据同步原理 1、全量同步 2、主节点如何判断是不是第一次连接 3、增量同步 4、优化主从数据同步 一、搭建主从集群 1、介绍 单节点的Redis并发能力存在上限&#xff0c;要提高并发能力就需要搭建主从集群&#xff0c;实现…