您现在的位置是:探索 >>正文
api post预计执行脚本
探索5558人已围观
简介调一次接口,等三秒。调十次,等三十秒。写脚本的时候最烦的不是代码本身,是那种"点一下、等一会儿、看结果"的节奏。API Post 的预执行脚本功能,解决的就是这个事——它让你在请求真正发出去之前,先跑 ...
调一次接口,计执等三秒。行脚调十次,计执等三十秒。行脚写脚本的计执时候最烦的不是代码本身,是行脚那种"点一下、等一会儿、计执看结果"的行脚节奏。API Post 的计执预执行脚本功能,解决的行脚就是这个事——它让你在请求真正发出去之前,先跑一段 JavaScript。计执
这个功能藏在哪?行脚打开 API Post,选中一个请求,计执找到"预执行脚本"或"Pre-request Script"标签页,行脚点进去就是计执一个代码编辑器。你可以在这里写任意 JS,操作环境变量、生成签名、修改请求参数,甚至发一个额外的 HTTP 请求去拿 token。
为什么需要"执行前"这一步
很多接口不是你把 URL 和 body 填好就能直接调的。最典型的就是鉴权。比如某个 API 要求请求头里带一个 sign 字段,值是 appKey + timestamp + body 拼起来再做 MD5。你每次手动算?不现实。预执行脚本里写三行代码就搞定了:
const timestamp = Date.now().toString(); const raw = pm.environment.get("appKey") + timestamp + JSON.stringify(pm.request.body); const sign = CryptoJS.MD5(raw).toString(); pm.request.headers.add({ key: "sign", value: sign }); pm.request.headers.add({ key: "timestamp", value: timestamp }); 这段脚本在请求发出前跑完,header 自动带上去了。你点"发送"的时候,sign 已经算好了。不用切终端,不用开另一个工具。
变量操作是核心
API Post 的预执行脚本能读写环境变量和全局变量,这是它最实用的地方。我见过一个场景:测试一套订单流程,创建订单返回 orderId,后续的查询、取消、退款接口都要用这个 ID。手动复制粘贴?一次两次还行,跑回归测试的时候就是灾难。
预执行脚本配合测试脚本就能串起来。在创建订单的"测试脚本"里把 orderId 写进环境变量,在后续接口的"预执行脚本"里读出来塞进 URL 或 body。整条链路自动跑通。这种用法在 API Post 里很常见,官方文档也给了示例,但真正用起来的人不算多——很多人还是习惯手动改参数。
有个细节:预执行脚本里访问请求体,用的是 pm.request.body,但它的格式取决于你选的 body 类型。raw JSON 和 form-data 拿到的结构不一样。我踩过这个坑,脚本里 JSON.stringify 之后发现多了一层转义,排查了半天。后来干脆在脚本里先 console.log 一下,确认结构再写逻辑。
还能干点别的
预执行脚本不只能算签名。有人用它做请求参数的动态替换——比如从 CSV 文件读测试数据,每次请求换一组参数。也有人用它做条件跳过:如果某个环境变量没设置,直接 pm.execution.skipRequest(),请求就不发了。这个在批量跑集合的时候很有用,避免无效请求污染测试结果。
还有人在预执行脚本里发一个登录请求,拿到 token 再塞给当前请求。这相当于把"登录"这一步前置了,省得你单独调一次登录接口再复制 token。不过要注意,预执行脚本里发请求是异步的,得用 pm.sendRequest 配合回调,写起来比同步代码绕一点。
几个实际使用中的注意点
脚本执行时间算在请求总耗时里。如果脚本里做了复杂计算或者发了额外请求,接口响应时间会变长。调试的时候别被这个误导,以为服务端慢了。
另外,预执行脚本的作用域是单个请求。如果你有十个请求都要算同样的签名,要么每个都复制一份脚本,要么用集合级别的预执行脚本——API Post 支持在集合层级写脚本,集合内所有请求都会执行。这个层级的脚本适合放公共逻辑,比如统一鉴权。
最后提一句,脚本里 pm.environment.set() 设的变量,在当前请求的测试脚本里能读到,在下一个请求的预执行脚本里也能读到。但如果你在集合运行器里跑,变量是跨请求持久的。这个特性用好了,整条测试链路就是自动化的;用不好,变量互相覆盖,排查起来很头疼。建议变量命名带上前缀,比如 order_id、user_token,别用 id、token 这种通用词。
说到底,预执行脚本就是把"请求发出前需要做的杂活"代码化了。你用不用它,接口都能调通。但当你一天要调五十次同一个接口,每次都要手动改时间戳、算签名、换 token 的时候,写一次脚本的投入,几分钟就回本了。
Tags:
上一篇:深入浅出mysql第三版
下一篇:mysql数据库怎么连接
相关文章
在线看盗版电影的网站
探索凌晨两点十七分,我盯着屏幕上那个旋转的菊花图标,等了足足四十秒。这不是什么正版流媒体平台的缓冲,而是某个域名后缀为.cc的盗版网站,正试图加载一部刚下映的院线片。第四十三秒,画面亮了,画质像是用手机对 ...
【探索】
阅读更多百搜视频网站
探索百搜视频网站打开的时候,我正打算搜一部老电影《甜蜜蜜》。首页推的是各种短剧,封面全是夸张的表情包,标题一个比一个惊悚。我键入关键词,回车,结果排在前面的不是电影,是几个解说视频,点进去,一个男声用三倍 ...
【探索】
阅读更多幼儿园网络安全自查整改报告
探索幼儿园网络安全自查整改报告 上周三下午,中班教室的平板电脑突然弹出一个游戏广告,孩子们围成一圈,有个小男孩已经点进去了。我冲过去拔掉网线时,手心全是汗。这件事成了我们园网络安全自查的导火索——原来风险 ...
【探索】
阅读更多