全网最全,Postman接口自动化测试实战整理,避开所有弯路...

news2024/11/20 3:24:41

目录:导读

    • 前言
    • 一、Python编程入门到精通
    • 二、接口自动化项目实战
    • 三、Web自动化项目实战
    • 四、App自动化项目实战
    • 五、一线大厂简历
    • 六、测试开发DevOps体系
    • 七、常用自动化测试工具
    • 八、JMeter性能测试
    • 九、总结(尾部小惊喜)


前言

背景描述

项目要使用postman进行接口测试。

接口所需参数有:
appid:应用标识;
sign:请求签名,需要使用HMACSHA1加密算法计算,签名串是:{appid} u r l {url} url{stamp};
stamp:这个是时间戳;
option:业务参数;

问题是怎么在Postman发起请求时根据参数动态构建签名(sign)?

postman的脚本库中CryptoJS是支持各种算法的加密,包括HMACSHA1,签名算法有了。

难点是获取url中的path参数,当发起一个请求时开始可以固定一个path值的,自动化测试需要执行时获取path值,怎么获取呢?

1、创建一个GET请求

postman基础用法就不介绍了,先创建一个GET请求,URL中有配置各种动态参数

{{变量名}} :postman引用环境变量的语法;
{{$guid}}:postman预定义的环境变量用于获取一个GUID值;

在这里插入图片描述

2、在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();

3、脚本写在环境变量中

在Pre-request Script写上面代码,要是单个接口还是可以的,即使很多接口只要Copy一份即可。

万一脚本需要改麻烦就来了,你需要去每个请求的 Pre-request Script窗口改,怎么解决呢?

可以解决,将postmanUtil定在ENVIRONMENT中就可以了。

做法如下:

在这里插入图片描述

其实就是将postmanUtil放入环境变量了,其它没有变,只要维护环境变量里的值就OK了,不用一个个去改。

再看pre-request script代码,这样就简单多了:

在这里插入图片描述

4、postman console的用法

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

在这里插入图片描述

图中是console.log(sercret) 和 sendRequest()的结果

5、Collection Runner 自动化API测试

1)创建接口的测试用例

对于返回html的结果,只要测试body中包含某个值就算通过

在这里插入图片描述

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

在这里插入图片描述

窗口右侧有常用的脚本快捷操作,选中就可以生成,很方便

2)选择并运行自动化接口测试

点击主页左上角Runner进入,选择之前构建好的接口,并选择好环境,点击Run xxx 接口运行脚本测试

在这里插入图片描述

3)测试结果

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

在这里插入图片描述

下面是我整理的2023年最全的软件测试工程师学习知识架构体系图

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

无论现在的起点有多么低微,只要你有追求,愿意努力,相信并坚持自己的能力,你一定能创造出属于自己的辉煌,让梦想的火焰燃烧不灭!奋斗吧,勇敢的心!

奋斗是生命的底色,努力是成功的密码。不畏艰辛,放眼未来,勇往直前,追求卓越。用行动书写辉煌,用奋斗点亮人生,成就自己,创造无限可能!

只要心怀梦想,努力不懈,每一步都是向前的动力。成功需要时间,奋斗需要坚持,但只要你相信自己,勇往直前,未来的辉煌将属于你!

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

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

相关文章

信钰证券:新增融券交易明显降温 业内称新规将平衡多类型投资者利益

10月14日,中国证监会发布调整优化融券相关准则的通知,沪深北买卖所齐发具体安排,阶段性收紧融券和战略出资者配售股份出借。其间,融券保证金比例进步自10月30日起实施,战略出资者配售股份出借收紧等其他条款自10月16日…

大模型的实践应用1-利用ChatGLM2大模型研发智能自助用药问答系统,远程监控患者的用药情况

大家好,我是微学AI,今天给大家介绍一下大模型的实践应用1-利用ChatGLM2大模型研发智能自助用药问答系统,远程监控患者的用药情况。 随着人工智能技术的发展,我们的生活在许多方面都得到了改善。医疗领域也不例外。本文将介绍如何利用大模型(例如ChatGLM2-6b,文心一言,通义…

2023最新软件测试面试题解析

前言 时光荏苒,一转眼已踏入2023年,进入金九银十,人员就业市场以往的寒冬也貌似有了转暖的迹象,身边大批的就业人员也开始了紧张的备战之中。 近几周也和多家合作公司的HR进行了沟通,发现虽然岗位就业情况较去年有所…

Python数据分析实战-使用map方法根据字典中的映射关系替换某列的值(附源码和实现效果)

实现功能 使用map方法根据字典中的映射关系替换某列的值 实现代码 import pandas as pd# 创建一个示例DataFrame data {A: [1, 2, 3, 4, 5],B: [a, b, c, d, e]} df pd.DataFrame(data)# 打印映射替换前的DataFrame print("映射替换前的DataFrame:")…

windows中elasticsearch7中添加用户名密码验证

1.找到elsatic的bin目录输入cmd 2.生成ca证书 输入 elasticsearch-certutil ca 在es7根目录生成ca证书,输入密码时直接回车即可,否则后面会报错 Please enter the desired output file [elastic-stack-ca.p12]: #这里直接回车即可 Enter password for…

SAP-QM-采购过程模式与特性检验不匹配QD244

在创建物理样本,维护检验计划的采样过程时报错,从报错看,这个采样过程的评估模式和检验特性不匹配, 评估模式为700 700是根据特征上下线,计算平均值进行评估,是定量特性,经过测试 是检验特性的…

代码随想录第46天 | ● 583. 两个字符串的删除操作 ● 72. 编辑距离

583. 两个字符串的删除操作 /*** param {string} word1* param {string} word2* return {number}*/ var minDistance function(word1, word2) {const dp new Array(word1.length 1).fill(0).map(x > new Array(word2.length 1).fill(0));for (let i 0; i < word1.le…

软件外包开发测试文档

编写软件测试文档是确保软件质量和有效执行测试的关键步骤。以下是编写软件测试文档的一般步骤和建议&#xff0c;希望对大家有所帮助。北京木奇移动技术有限公司&#xff0c;专业的软件外包开发公司&#xff0c;欢迎交流合作。 文档概述&#xff1a; 开始文档&#xff0c;提供…

ISR实现RDN图像增强

ISR实现RDN图像增强 图像增强作用ISR项目安装1.从PyPI安装ISR&#xff08;推荐&#xff09;&#xff1a;2.从GitHub源代码安装ISR&#xff1a; 用法预测大图像推理 训练创建模型 RDN算法介绍Residual Dense Network的结构残差稠密块&#xff08;Residual Dense Block&#xff0…

九月 Web3 游戏报告:数量增长,巨头入场,用户获取和留存仍存挑战

作者: stellafootprint.network 9 月份&#xff0c;比特币价格窄幅波动&#xff0c;小幅上涨 3.7%。Web3 游戏行业正在增长&#xff0c;但月活跃用户超过 1,000 人的游戏仍不足 10%。不同公链上的游戏分布相对稳定&#xff0c;其中 BNB 以 30.9% 的份额领先。 随着 Web3 游戏…

【ARM Cache 系列文章 10 -- ARM Cortex-A720 Hunter 介绍】

文章目录 概述1.1 A720 Features1.1.1 core features1.1.2 Cache features1.1.3 Debug features 1.2 A720 组件介绍1.2.1 L1 缓存系统1.2.2 指令解码1.2.3 寄存器重命名1.2.4 指令分发单元1.2.5 向量执行单元1.2.6 加解密扩展单元1.2.6.1 有限域算法 1.3 接口1.4 GIC CPU Inter…

TTS | 语音合成模型实验结果经验总结

本文主要是语音合成模型实验结果经验总结&#xff01;&#xff01; 首先列出实验过的所有模型 Fastspeech&Fastspeech2Tacotron&Tacotron2Transformer-TTSBark(E2E)VITS/VITS2(E2E)NaturalSpeech2MB-iSTFT-VITS/ MB-iSTFT-VITS2(E2E) 1.语音合成主主要架构如下 2.模…

C++对象模型(15)-- 构造函数语义学:移动构造函数和移动赋值运算符

1、什么是移动构造函数 我们知道拷贝构造函数分为浅拷贝和深拷贝。 &#xff08;1&#xff09;浅拷贝&#xff1a;当类含有指针变量时&#xff0c;浅拷贝会发生错误。 &#xff08;2&#xff09;深拷贝&#xff1a;每次都要全部赋值一份&#xff0c;内存消耗比较大。 移动构…

红队专题-从零开始VC++C/S远程控制软件RAT-MFC-[5]客户端与服务端连接

红队专题 招募六边形战士队员端操作系统SystemInfo类获取系统信息发送系统信息头文件声明头文件调用 未找到来自 OleAcc.dll 的导入LINK 招募六边形战士队员 一起学习 代码审计、安全开发、web攻防、逆向等。。。 私信联系 端 发送连接->进入主线程->返回socket->…

【iOS】JSONModel的基本使用

文章目录 前言一、导入JSONModel二、JSONModel的基本使用1.基本用法2.模型集合3.模型导出为NSDictionary或JSON4.设置所有属性可选&#xff08;所有属性值可以为空&#xff09;5.下划线(蛇式)转驼峰命名法 前言 JSONModel 是一个用于 Objective-C 的开源库&#xff0c;它用于简…

使用 Python 进行卡方测试

使用 Python 进行卡方测试 Python 中卡方特征测试的简单解释 奥坎耶尼根 跟随 发表于 迈向开发 4 分钟阅读 2月 2022&#xff0c; <> 18 1 土耳其超级联赛的三大足球俱乐部 一、说明 卡方检验用于检验为分类变量创建的模型。也就是说&#xff0c;这是我们在统计学中经…

Java】实现图片验证码2.0【详细代码】

实际开发过程中经常遇到要实现图片验证码来防止外部使用脚本刷接口&#xff0c;所以说图片验证码是很有必要的一个小功能。 下面这个之前发布的&#xff0c;现在发现生成的图片验证码是可以被自动化工具进行识别的&#xff0c;具有一定的安全性问题。 1.0版本验证码&#xff…

汽车零部件企业信邦控股之项目管理实践案例

信邦控股有限公司&#xff08;信邦控股&#xff09;为香港交易所主版上市公司&#xff0c;是惠州建邦精密塑胶有限公司的控股公司。信邦控股集团是国际化一站式表面处理专家&#xff0c;主要产品包括汽车内饰件、外饰件和双层挠性覆铜板&#xff0c;总部设于中国惠州。 信邦控股…

2023年中国熔盐储能装机量、新增装机量及行业投资规模分析[图]

熔盐储能是一种可以传递能量、长时间&#xff08;6-8h&#xff09;、大容量储能的技术路径&#xff0c;作为传热介质可以实现太阳能到热能的转换&#xff0c;作为储能介质可以实现将热能和电能的双向转换&#xff0c;可以很好的适应和解决以上两大矛盾。因此&#xff0c;熔盐储…

【面试题笔记】C++继承和多态常见高频经典面试题

1.继承相关习题 1.1 什么是菱形继承&#xff1f;菱形继承的问题是什么&#xff1f; 菱形继承&#xff1a;菱形继承是多继承的一种特殊情况。两个中间类继承父类&#xff0c;而派生类继承了两个中间类&#xff0c;从而在继承关系上呈现出一种菱形。如下图所示&#xff1a; **…