postman自动化接口测试
背景描述
有一个项目要使用postman进行接口测试,接口所需参数有:
- appid: 应用标识;
- sign:请求签名,需要使用HMACSHA1加密算法计算,签名串是:{appid}${url}${stamp};
- stamp:这个是时间戳;
- option:业务参数;
问题是怎么在Postman发起请求时根据参数动态构建签名(sign)?
postman的脚本库中CryptoJS是支持各种算法的加密,包括HMACSHA1,签名算法有了。
难点是获取url中的path参数,当发起一个请求时开始可以固定一个path值的,自动化测试需要执行时获取path值,怎么获取呢?
创建一个GET请求
postman基础用法就不介绍了,先创建一个GET请求,URL中有配置各种动态参数
{{变量名}} :postman引用环境变量的语法;
{{$guid}}:postman预定义的环境变量用于获取一个GUID值;

在pre-request scripts构建签名
pre-request scripts 是个javascript执行环境,在请求发送之前执行;把他当做js用就行,不过有的js库是不支持的。
接下来就是动态获取签名了
1、appid环境变量中配置的固定值;
2、stamp时间戳获取:
//获取unix时间
getUnixTime:function(){return Math.round(new Date().getTime()/1000);
}
3、url值可以通过request.url获取然后解析出其中的path:
//获取url的path部分
getUrlRelativePath:function(url){var arrUrl = url.split("//");var start = arrUrl[1].indexOf("/");var end=arrUrl[1].indexOf("?");var relUrl = arrUrl[1].substring(start,end);//stop省略,截取从start开始到结尾的所有字符console.log(relUrl);return relUrl;
}
4、构造签名串,使用秘钥加密即可。
postman提供的加密算法库并不一定所有都支持,有时候需要向后台去换取签名;
var host=pm.environment.get("host");
var text=encodeURIComponent(plain);
pm.sendRequest(host+"/FaceIn/ToHmacsha1?plain="+text+"&secret="+sercret, function (err, response) {var json=response.json();//签名含有+等特殊字符需要url编码pm.environment.set("sign",encodeURIComponent(json.result));
});
签名串最好进行URL编码。
遗留问题:向后台换取签名的时候起初是返回字符串responsejson()解析不了的!
5、使用eval将定义的变量postmanUtil注入全局变量中然后调用
eval(environment.postmanUtil);
postmanUtil.setLsdzSign();
结果如图:

代码如下:
var postmanUtil={//获取unix时间getUnixTime:function(){return Math.round(new Date().getTime()/1000);},//获取url的path部分getUrlRelativePath:function(url){var arrUrl = url.split("//");var start = arrUrl[1].indexOf("/");var end=arrUrl[1].indexOf("?");var relUrl = arrUrl[1].substring(start,end);//stop省略,截取从start开始到结尾的所有字符console.log(relUrl);return relUrl;},//签名setLsdzSign:function(){var appid=pm.environment.get("appid");var sercret=pm.environment.get("appsercret");//时间戳var time=postmanUtil.getUnixTime();pm.environment.set("stamp", time);//地址 获取当前地址的path部分var path= postmanUtil.getUrlRelativePath(request.url);console.log(path);var url=path;var plain=appid+"$"+url.toLowerCase()+"$"+time;var hmac = CryptoJS.HmacSHA1(plain, sercret).toString(CryptoJS.enc.Base64);//获取签名,CryptoJS.HmacSHA1 无法满足签名算法只能从后台var host=pm.environment.get("host");var text=encodeURIComponent(plain);pm.sendRequest(host+"/FaceIn/ToHmacsha1?plain="+text+"&secret="+sercret, function (err, response) {var json=response.json();//签名含有+等特殊字符需要url编码pm.environment.set("sign",encodeURIComponent(json.result));});}
}
eval(environment.postmanUtil);
postmanUtil.setLsdzSign();
脚本写在环境变量中
在Pre-request Script写上面代码,要是单个接口还是可以的,即使很多接口只要Copy一份即可。
万一脚本需要改麻烦就来了,你需要去每个请求的 Pre-request Script窗口改,怎么解决呢?
可以解决,将postmanUtil定在ENVIRONMENT中就可以了,做法如下:

其实就是将postmanUtil放入环境变量了,其它没有变,只要维护环境变量里的值就OK了,不用一个个去改。
再看pre-request script代码,这样就简单多了:

postman console的用法
不知道是否成功获取了环境变量,又或者想查看某个变量的值,postman也提供了很方便的控制台查看,菜单View下Show Postman Console可以打开如下控制台:

图中是console.log(sercret) 和 sendRequest()的结果
Collection Runner 自动化API测试
创建接口的测试用例
对于返回html的结果,只要测试body中包含某个值就算通过

对于返回Json结果,只要Code为0即为通过

窗口右侧有常用的脚本快捷操作,选中就可以生成,很方便
选择并运行自动化接口测试
点击主页左上角Runner进入,选择之前构建好的接口,并选择好环境,点击Run xxx 接口运行脚本测试

测试结果
可以看到结果2接口都成功返回预定的结果

Python接口自动化测试零基础入门到精通(2024最新版)
相关文章:
postman自动化接口测试
背景描述 有一个项目要使用postman进行接口测试,接口所需参数有: appid: 应用标识;sign:请求签名,需要使用HMACSHA1加密算法计算,签名串是:{appid}${url}${stamp};stamp࿱…...
React入门 - 04(从编写一个简单的 TodoList 说起)
继上一节我们已经对 React组件和 ”JSX语法“有了大概的了解,这一节我们继续在 react-demo这个工程里编写代码。这一节我们来简单实现一个 TodoList来更加了解编写组件的一些细节。 1、在编辑器中打开 react-demo这个工程 2、打开 index.js文件,将组件 …...
EDM群发的优势
在当今这个数字化的时代,电子邮件营销(EDM)已经成为企业与客户沟通的重要手段。相较于传统的营销方式,EDM群发具有许多独特的优势,使其在商业竞争中占据了不可替代的地位。 首先,EDM群发具有精准的目标定位…...
AI对决:ChatGPT与文心一言的深度比较
. 个人主页:晓风飞 专栏:数据结构|Linux|C语言 路漫漫其修远兮,吾将上下而求索 文章目录 引言ChatGPT与文心一言的比较Chatgpt的看法文心一言的看法Copilot的观点chatgpt4.0的回答 模型的自我评价自我评价 ChatGPT的优势在这里插入图片描述 文…...
在国产操作系统下管理Oracle数据库
Oracle公司是全球最大的信息管理软件及服务供应商,其开发的数据库产品因性能卓越而闻名,占有最大的市场份额,被广泛用于各个市场领域。 然而在信创化的时代,国产操作系统已然是大势所趋,但是由于历史原因,…...
RTSP/Onvif安防视频监控平台EasyNVR漏洞扫描及解决方法
视频安防监控平台EasyNVR可支持设备通过RTSP/Onvif协议接入,并能对接入的视频流进行处理与多端分发,包括RTSP、RTMP、HTTP-FLV、WS-FLV、HLS、WebRTC等多种格式。安防视频监控平台可提供视频实时监控直播、云端录像、云存储、录像检索与回看、告警等视频…...
Ovtio不同版本下载
关注 M r . m a t e r i a l , \color{Violet} \rm Mr.material\ , Mr.material , 更 \color{red}{更} 更 多 \color{blue}{多} 多 精 \color{orange}{精} 精 彩 \color{green}{彩} 彩! 主要专栏内容包括: †《LAMMPS小技巧》: ‾ \textbf…...
【MATLAB】Linux版本 高分辨率屏 调整显示缩放
0 引言 安装了linux版本的MATLAB R2023b之后,发现工具栏字体很小不方便使用,所以上网找到了MATLAB论坛上某位大佬的教程:参考链接,放在这里供各位参考 。 1 环境 这里注明我的matlab安装环境仅供参考,未在其他环境下…...
windows系统中,通过LOAD到入csv格式的文件到neo4j中,如何写文件路径
在Neo4j中,使用LOAD CSV语句导入CSV文件时,需要确保你的文件路径是正确的。如果你使用的是Neo4j Desktop或者Neo4j Server,通常需要将CSV文件放在特定的导入目录下。 例如,如果你使用的是Neo4j Desktop,通常会有一个默…...
斯坦福 Stats60:21 世纪的统计学:第十五章到第十八章
第十五章:比较均值 原文:statsthinking21.github.io/statsthinking21-core-site/comparing-means.html 译者:飞龙 协议:CC BY-NC-SA 4.0 我们已经遇到了许多情况,我们想要询问样本均值的问题。在本章中,我们…...
C# 关于当ObservableCollection增删查改元素时,触发事件用例
ObservableCollection 类提供了一种实时监测集合变化的机制,可以通过订阅 CollectionChanged 事件来响应集合的添加、移除和重置等变化。 using System; using System.Collections.ObjectModel; using System.Collections.Specialized;class Program {static void …...
阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接
阿里云 WindowsServer 使用之 配置 SQL Server 允许远程连接 第一步:安装 SQL Server 数据库 这是一个很详细的安装教程,可以参考一下 安装SQL Server详细教程 需要注意:安装实例时,建议在‘身份验证模式’直接选择“混合模式”…...
树形+表单的封装+查重数组
一.树形结构的处理 后端传过来的数据,可能是平铺的一个结构: 在财务部下面,有财务核算部,薪资管理部,我们需要将平铺的数据通过递归转化成: 转换成有children的形式,来渲染到页面上去,在这里用到了作用域插槽,具体怎么使用,可以通过查看文档…...
laravel 中间件记录日志
前提 我希望通过中间件记录用户的请求数据、我的返回数据,如果出现异常捕获异常。 代码 路由文件:追加中间件api-logging,用于记录日志 Route::prefix(api)->middleware([api, api-logging])->group(function () {...路由内容 });n…...
Pandas十大练习题,掌握常用方法
文章目录 Pandas分析练习题1. 获取并了解数据2. 数据过滤与排序3. 数据分组4. Apply函数5. 合并数据6. 数据统计7. 数据可视化8. 创建数据框9. 时间序列10. 删除数据 代码均在Jupter Notebook上完成 Pandas分析练习题 数据集可从此获取: 链接: https://pan.baidu.co…...
CMake TcpServer项目 链接静态库/动态库
一、链接静态库 查看项目结构 hehedalinux:~/Linux/LinuxServerCpp-Link$ tree . ├── CMakeLists.txt ├── include │ ├── common │ │ ├── Buffer.h │ │ ├── Channel.h │ │ └── Log.h │ ├── http │ │ ├── HttpRequest…...
uint32无符号字节转为Java中的int
文章目录 前言一、无符号字节转为int1.前置知识2.无符号转int代码3.Java中字节转为int 二、字节缓冲流1.基础知识2.String与ByteBuffer转换 总结 前言 Java 中基本类型都是有符号数值,如果接收到了 C/C 处理的无符号数值字节流,将出现转码错误。 提示&a…...
Python网络爬虫进阶:自动切换HTTP代理IP的应用
前言 当你决定做一个网络爬虫的时候,就意味着你要面对一个很大的挑战——IP池和中间件。这两个东西听起来很大上,但其实就是为了让你的爬虫不被封杀了。下面我就来给你讲讲如何搞定这些东西。 第一步:创建爬虫IP池的详细过程 首先…...
vivado 使用IP Integrator源
使用IP Integrator源 在Vivado Design Suite中,您可以在RTL中添加和管理IP子系统块设计(.bd)项目或设计。使用Vivado IP集成程序,您可以创建IP子系统块设计。IP集成程序使您能够通过实例化和将Vivado IP目录中的多个IP核互连。可…...
【Mybatis系列】Mybatis空值关联
💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!希望您在这里可以感受到一份轻松愉快的氛围,不仅可以获得有趣的内容和知识,也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…...
深度解析开源翻译方案:如何构建高效免费的DeepL替代品
深度解析开源翻译方案:如何构建高效免费的DeepL替代品 【免费下载链接】DeepLX Powerful Free DeepL API, No Token Required 项目地址: https://gitcode.com/gh_mirrors/de/DeepLX DeepL翻译API的免费限制和复杂配置常常让开发者望而却步。DeepLX作为开源免…...
MacType终极指南:如何快速解决Windows字体模糊问题
MacType终极指南:如何快速解决Windows字体模糊问题 【免费下载链接】mactype Better font rendering for Windows. 项目地址: https://gitcode.com/gh_mirrors/ma/mactype Windows字体渲染优化是每个追求视觉体验的用户都关心的话题。MacType作为Windows平台…...
2026年腾讯云OpenClaw/Hermes Agent配置Token Plan搭建详细攻略
2026年腾讯云OpenClaw/Hermes Agent配置Token Plan搭建详细攻略。OpenClaw是开源的个人AI助手,Hermes Agent则是一个能自我进化的AI智能体框架。阿里云提供计算巢、轻量服务器及无影云电脑三种部署OpenClaw 与 Hermes Agent的方案、百炼Token Plan兼容主流 AI 工具&…...
大麦网自动抢票神器:90%成功率的一键抢票终极指南
大麦网自动抢票神器:90%成功率的一键抢票终极指南 【免费下载链接】Automatic_ticket_purchase 大麦网抢票脚本 项目地址: https://gitcode.com/GitHub_Trending/au/Automatic_ticket_purchase 当周杰伦演唱会门票在3秒内售罄,当热门演出让你一次…...
3步完成SQLite到MySQL数据库迁移:智能转换工具实战指南
3步完成SQLite到MySQL数据库迁移:智能转换工具实战指南 【免费下载链接】sqlite-to-mysql Script to convert and add sqlite3 database into a mysql/mariadb database 项目地址: https://gitcode.com/gh_mirrors/sq/sqlite-to-mysql 在开发项目从原型到生产…...
告别格式修改熬夜战!okbiye 一键搞定毕业论文格式规范
okbiye-免费查重复率aigc检测/开题报告/毕业论文/智能排版/文献综述/AI PPT智能排版 - Okbiye智能写作https://www.okbiye.com/typesetting 一、毕业季的格式噩梦:多少论文栽在 “排版” 这一步 临近毕业,不少同学的论文修改稿都卡在了格式环节…...
DS4Windows实战指南:在Windows上完美使用PS4手柄的终极解决方案
DS4Windows实战指南:在Windows上完美使用PS4手柄的终极解决方案 【免费下载链接】DS4Windows Like those other ds4tools, but sexier 项目地址: https://gitcode.com/gh_mirrors/ds/DS4Windows 在Windows系统上使用PS4手柄玩游戏时,你是否遇到过…...
鲸震恩!DeepSeek V4 价格永久“打骨折”,网友疯狂“表白”:梁圣的恩情还不完
①2026 年 5 月 22 日 20:36,DeepSeek 官宣,deepseek-v4-pro 模型 API 价格将于北京时间 2026/05/31 23:59 结束 2.5 折优惠活动后,正式调整为原定价的 1/4。也就是说,从 6 月 1 日起当前 2.5 折直接变成常态价了。在上次…...
从博弈论到可解释AI:Shapley值及其交互指数的原理与应用
1. 从博弈论到可解释AI:理解Shapley值的核心思想在机器学习模型日益复杂的今天,理解一个模型为何做出某个预测,其重要性不亚于模型本身的性能。想象一下,你训练了一个精准的房价预测模型,当它判断某套房子价值500万时&…...
基于Hugging Face BART模型构建文本摘要服务:从原理到部署实战
1. 项目概述:从零构建一个可用的文本摘要服务文本摘要,这个听起来有点学术的词,其实离我们很近。想想看,每天面对海量的新闻、报告、论文,甚至冗长的会议纪要,谁不想快速抓住核心要点?这就是文本…...
