news 2026/2/5 6:11:16

postman接口测试系列: 时间戳和加密

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
postman接口测试系列: 时间戳和加密

在使用postman进行接口测试的时候,对于有些接口字段需要时间戳加密,这个时候我们就遇到2个问题,其一是接口中的时间戳如何得到?其二就是对于现在常用的md5加密操作如何在postman中使用代码实现呢?
下面我们以一个具体的接口例子来进行说明。
首先来看看我们的接口文档信息,如图所示

此接口文档中,需要三个参数customercode、timestamp和itoken(是customerCode+timestamp+ytoken加密后的结果)。
第一次操作的时候,我们使用postman会这样操作,如图

这样操作流程是:

选择提交方式是post,输入接口的url地址
选择接口情况的方式是x-www-form-urlencoded
设置接口的参数customerCode、timestamp和itoken和值
设置完成之后点击send发送,查看接口响应结果
说明

x-www-form-urlencoded即是application/x-www-from-urlencoded,将表单内的数字转换为键对值

postman中 form-data、x-www-form-urlencoded、raw、binary的区别:

postman中 form-data、x-www-form-urlencoded、raw、binary的区别_postman from-data-CSDN博客

时间戳转换工具:

Unix时间戳(Unix timestamp)转换工具 - 站长工具

md5加密工具:

MD5在线加密 - MD5加密工具 - MD5在线生成

这样创建会话的接口我们就完成了!但是为了系统的安全性,这里的timestamp是每30分钟就会过期的,下次我们又需要重新设置timestamp,就是md5加密的结果......这样操作岂不是太麻烦?

还好postman中Pre-Request Script可以在 Request 之前自定义请求数据,这样做的好处就是可以以嵌入脚本的方式动态准备测试数据,并根据业务需求设计测试用例。

这里我们仍继续以上面的用例为例:

在postman中,如何才能获取当前机器上的timestamp呢?

Math.round(new Date().getTime())
可以满足我们的要求!!!
那代码如何实现呢?

//设置当前时间戳毫秒
postman.setGlobalVariable("timestamp",Math.round(new Date().getTime()));
这样就将获取的时间戳设置为全局变量timestamp
我们知道itoken的值是md5(customerCode+timestamp+ytoken')
那么接下来就可以动态的获取md5的信息了,代码如下:

//发起请求之前获取当前的时间戳放在参数里
//postman.setGlobalVariable("customerCode","***2345677***");
//1.设置环境变量 postman.setEnvironmentVariable("key", "value");
//2.设置全局变量 postman.setGlobalVariable("key", "value");
//environment.customerCode = "***2345677***";
customerCode = postman.getGlobalVariable("customerCode");
//设置当前时间戳毫秒
postman.setGlobalVariable("timestamp",Math.round(new Date().getTime()));
//environment.timestamp = Math.round(new Date().getTime());
//postman.setEnvironmentVariable("unixtime_now","timecode");
//var jsonData = JSON.parse(request.data.applyJsonStr);
//postman.setGlobalVariable("ytoken","*********b176a4739bfccb*********");
//获取全局变量
//如postman.getGlobalVariable("key");
customerCode = postman.getGlobalVariable("customerCode");
timestamp = postman.getGlobalVariable('timestamp');
ytoken = postman.getGlobalVariable("ytoken");
var str = customerCode+timestamp+ytoken;
//postman.setEnvironmentVariable("str",str);
//environment.str = str;
postman.setGlobalVariable("str",str);
//var md5 = CryptoJS.MD5(str).toString().toLowerCase();
//使用md5加密
//var strmd5 = CryptoJS.MD5(str).toString();
var strmd5 = CryptoJS.MD5(str);
//environment.strmd5 = strmd5;
postman.setGlobalVariable('md5',strmd5);
//environment.md5 = md5;
//timecode=System.currentTimeMillis();
console.log(str);
而在接口请求中,就可以使用已经定义好的变量来进行接口操作,代码如下

customerCode:{{customerCode}}
timestamp:{{timestamp}}
ltoken:{{md5}}

如图所示

这样下次创建接口的时候,直接运行该用例即可,不用再次修改参数值(≧▽≦)/
那么我们如何才能知道该接口用例是成功的呢,该怎么断言呢?
这里列出我该接口断言的一个示例,代码如下

/*
// 推荐用全等 ===,确保类型和值都一致
tests['Status code is 200'] = responseCode.code === 200;
// 判断是否存在 'success' 值
tests["Body matches code"] = responseBody.has("0");
var jsonData = JSON.parse(responseBody);
postman.setEnvironmentVariable("sessionId",jsonData.result);
tests[`[INFO] Request params: ${JSON.stringify(request.data)}`] = true;
tests["have result "]=jsonData.hasOwnProperty("error")!==true;
tests[`[INFO] Response timeout: ${responseTime}`] = responseTime < 6000;
**/
//状态代码是200
if(responseCode.code === 200){
// 判断是否存在 'success' 值,检查响应体包含一个字符串
tests["Body matches code"] = responseBody.has("0");
//响应结果中result保存为全局变量sessonId
var jsonData = JSON.parse(responseBody);
postman.setGlobalVariable("sessionId",jsonData.result);
//输入接口参数信息
tests[`[INFO] Request params: ${JSON.stringify(request.data)}`] = true;
// tests["have result "]=jsonData.hasOwnProperty("error")!==true;
//判断接口响应结果有result
tests["have result "]=jsonData.hasOwnProperty("result")===true;
//判断接口响应时间小于N秒
tests[`[INFO] Response timeout: ${responseTime}`] = responseTime < 6000;
}else{
//接口请求失败
tests["Waring:Request Failed. Please Fix!"] = false;
}

这样创建会话的接口就完成了!

感谢每一个认真阅读我文章的人!!!

作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。

软件测试面试文档

我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。

视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/2/3 23:38:34

完整AMD性能优化指南:SMUDebugTool让你的处理器发挥极致潜能

完整AMD性能优化指南&#xff1a;SMUDebugTool让你的处理器发挥极致潜能 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: http…

作者头像 李华
网站建设 2026/2/3 14:08:43

5分钟搞定!PPTTimer悬浮计时器:演讲时间管理的终极解决方案

5分钟搞定&#xff01;PPTTimer悬浮计时器&#xff1a;演讲时间管理的终极解决方案 【免费下载链接】ppttimer 一个简易的 PPT 计时器 项目地址: https://gitcode.com/gh_mirrors/pp/ppttimer 还在为演讲超时焦虑不安&#xff1f;每次演示都像在和时间赛跑&#xff1f;P…

作者头像 李华
网站建设 2026/2/4 7:21:54

CH340芯片USB转串口驱动安装:新手教程(零基础必看)

CH340驱动安装全攻略&#xff1a;从零开始搞定USB转串口&#xff08;新手也能一次成功&#xff09; 你有没有遇到过这种情况&#xff1a;手里的开发板插上电脑&#xff0c;结果“设备管理器”里冒出来一个带黄色感叹号的“未知设备”&#xff1f;或者明明连上了&#xff0c;串口…

作者头像 李华
网站建设 2026/2/4 6:55:14

NCM解密终极指南:从加密困境到自由播放的全流程解决方案

NCM解密终极指南&#xff1a;从加密困境到自由播放的全流程解决方案 【免费下载链接】ncmdumpGUI C#版本网易云音乐ncm文件格式转换&#xff0c;Windows图形界面版本 项目地址: https://gitcode.com/gh_mirrors/nc/ncmdumpGUI 你是否曾经在网易云音乐购买了心爱的歌曲&…

作者头像 李华
网站建设 2026/2/4 6:00:08

cp2102 usb to uart bridge controller入门必看:手把手配置教程

手把手带你玩转 CP2102&#xff1a;从零开始配置 USB 转串口通信 你有没有遇到过这样的情况——手里的开发板、传感器或单片机项目需要通过串口调试&#xff0c;但笔记本却连一个 RS-232 接口都没有&#xff1f;别担心&#xff0c;这几乎是每个嵌入式工程师和电子爱好者的“入…

作者头像 李华
网站建设 2026/2/3 7:51:50

SMUDebugTool终极指南:5步掌握AMD Ryzen处理器硬件调试

SMUDebugTool终极指南&#xff1a;5步掌握AMD Ryzen处理器硬件调试 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://g…

作者头像 李华