全网最牛,postman接口测试-高级应用实战(总结)

news2024/11/14 12:14:15

目录:导读

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


前言

流程控制

流程控制简言之就是设置接口的执行顺序,流程控制只有在collection runner或Newman里才生效

如果需要实现多个接口的一次循环,只需在每个接口的Tests中编写脚本

postman.setNextRequest('下一个接口名');

操作如下图所示:

C1

使用if进行判断来结束执行:

if(globals["我的地盘::创建新列表 - 禅道"])postman.setNextRequest("null");
tests["执行完毕!"] = responseCode.code ===200;

我的地盘::创建新列表 - 禅道为接口B中的返回值,在接口B中将其定义成一个全局变量。接口A通过判断全局变量是否存在进而判断接口B是否执行。
如全局变量存在,将终止执行,否则执行接口B。

postman.setNextRequest("null");	//是一个终止程序作用

注意:
如果不设终止条件,接口A执行完到接口B,接口B执行完又指向接口A,会构成死循环。该示例中if(globals[“我的地盘::创建新列表 - 禅道”])为终止条件。

执行前需将用来做判断的全局变量删除,否则第一次执行完接口A后就将终止执行。

为了更清楚直观的查看运行结果,最好在每一个接口的Tests中增加一个断言,否则难以判断接口A执行的次数

调试

调试有三种方式:
使用Ctrl+Alt+c 可以打开Postman的控制台,可以查看请求和响应(只适用于客户端,不适用于Chrom 插件);

用console.log()打印,到控制台看;

tests[‘这里拼出你想看的字符串’] = true在界面/报告看断言;

使用Postman控制台查看,如下图所示:

C2

使用console.log()打印输出内容操作如下图所示:

C3

使用tests[‘这里拼出你想看的字符串’] = true,tests并不单单是指设置断言,也可以是普通的输出某些信息,如下图所示:

C4

公共函数

常用的公共函数分为六种,分别是:

判断是否超时(assertNotTimeout):

var hasResponse=postman.getResponseHeader('Content-Type')?true:false; 

if(!hasResponse) tests['服务端在超时前没返回任何数据,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false;

未超时,显示发出的请求参数(logParams):

if(hasResponse) tests[`[INFO] 请求参数(超时没返回时不解析):${JSON.stringify(request.data)}`]=true;

未超时,解析返回的JSON对象(getResponseJson):

try{
	if(hasResponse) var json=JSON.parse(responseBody);

}catch(err)
{ 
tests['服务端没返回合法的JSON格式,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false;
tests[`[INFO] 返回:${responseBody}`]=true; 
console.error(err);
}

返回元素的类型(assertType):

var assertType=(name,value,type)=>{
	let isType=(type==='array')? Array.isArray(value):typeof value===type; 

	tests[`${name}${type}(实际值:${value}`]=isType;
	};

返回元素是否与预期值一致(assertEqual):

var assertEqual=(name,actual,expected)=>{
	tests[`${name}等于${expected}(实际值:${actual}`]=actual===expected;
	};

返回元素是否与预期值不一致(assertNotEqual):

var assertNotEqual=(name,actual,expected)=>{
	tests[`${name}不等于${expected}(实际值:${actual}`]=actual!==expected;
	};

为了使用方便,所以将以上函数设置为全局变量,每行一对 key:value 的形式编辑设置成全局变量,如下图所示:

C5

设置好之后,来使用以上函数,使用时的代码为:

eval(globals.assertNotTimeout);//判断是否超时
eval(globals.logParams);//未超时,显示发出的请求参数
eval(globals.getResponseJson);//未超时,解析返回的JSON对象
eval(globals.assertType);//返回元素的类型
eval(globals.assertEqual);//返回元素是否与预期值一致
eval(globals.assertNotEqual);//返回元素是否与预期值不一致

各函数的具体用法,如下详解:

①第一个函数和第二个函数一起使用,先判断是否超时,若未超时,便显示发出的请求参数,操作如下图所示:

C6

tests中的代码为:

eval(globals.assertNotTimeout);
eval(globals.logParams);

②第一个函数和第三个函数一起使用,先判断是否超时,若未超时,便解析返回的JSON对象,操作如下图所示:

C7

tests中填入如下代码:

eval(globals.assertNotTimeout);
eval(globals.getResponseJson);

tests[json.expires_in] = 7200;

注意:由于getResponseJson是解析返回的JSON对象,所以接口请求返回的定是JSON才能使用

外部数据文件

外部数据文件是Collection Runner在HTTP requests 和script中可以导入CSV文件或是JSON文件,从数据文件(即CSV或JSON文件)中使用values,为了在Postman UI中去使用它们,你需要遵循和environment or global variables一样的语法。

操作步骤:
在你的Collection request中使用变量,以下的所有变量将会被数据文件中的相应的值替换

准备你所需要运行的数据文件(JSON/CSV)
CSV文件要在Collection Runner中工作,第一行必须是在request中要使用的变量名,每一行是一条用例,并表示一次迭代。

JSON文件,你需要确保你的文件有键/值对数组。数组中的每个元素是键值对的对象,代表了一次迭代。key是作为变量名,values是代替request里的值。

打开Collection Runner窗口以及选择合适的Collection或文件夹

选择“Choose files”,从文件选择区加载数据文件,如果加载成功,你可以预览Collection Runner中执行的数据量

设置迭代次数。每次迭代都将使用你的数据文件中的一行,如果迭代次数超过数据文件中的行数,将重复执行最后一行

运行Collection以及观察结果

注意:当有多个key值,中间用英文,隔开即可,csv文件中第一行的参数名要与发送请求中设置的变量名要一致

举例为百度接口,设置好参数,如下图所示:

C8

在左侧面板中选中该接口并运行,如下图所示

C9

配置参数,如下图所示:

C10

csv格式文件先制作好,再在运行时添加进来,预览效果如为:

C11

最终运行效果如下图所示:

C12

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

一、Python编程入门到精通

请添加图片描述

二、接口自动化项目实战

请添加图片描述

三、Web自动化项目实战

请添加图片描述

四、App自动化项目实战

请添加图片描述

五、一线大厂简历

请添加图片描述

六、测试开发DevOps体系

请添加图片描述

七、常用自动化测试工具

请添加图片描述

八、JMeter性能测试

请添加图片描述

九、总结(尾部小惊喜)

在岁月的洪流中,锐意前行,不畏挫折。用勇气与坚持绘就人生的壮丽篇章,用努力与奋斗书写成功的华美乐章。相信自己的潜力,放飞心灵的翅膀,你将展翅高飞!

披荆斩棘,无怨无悔;放眼未来,信心满怀。奋斗不止于一时一刻,而是持续不断的追求。每一次努力都将留下痕迹,每一次拼搏都将铸就辉煌。

勇敢追逐你内心的火焰,放飞梦想的翅膀,用坚持和努力去书写精彩人生。困难是通向成功的跳板,挫折是成长的催化剂。相信自己,奋斗不息,终将创造出属于自己的辉煌与价值!

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

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

相关文章

【Excel自动化办公】openpyxl如何实现Excel超链接批量化设置?

Python是一种高效的编程语言,它可以方便地处理各种文件格式,包括Excel。 在Excel中,超链接是一种非常有用的功能,它可以让用户快速跳转到其他工作表或其他文件中的特定单元格。 在本文中,我们将介绍如何使用Python来…

openpnp - Enable Visual Homing

文章目录 openpnp - Enable Visual Homing概述笔记视觉归零设置END openpnp - Enable Visual Homing 概述 设备已经完全通过openpnp的校验了. 当时发现一个问题, 视觉归零如果使能, 就会使主校准点和次校准点的位置发生变化, 导致顶部相机十字不能准确的落在主/次校准点上. 当…

【计算机网络】HTTP 协议详解

文章目录 1. HTTP 协议介绍2. HTTP 协议的工作过程3. Fiddler 抓包工具介绍3.1 抓包工具的使用3.2 抓包结果3.3 抓包工具原理 4. HTTP 协议格式总览5. HTTP 请求(Request)5.1 认识 URLURL 基本介绍URL 基本格式URL 参数介绍URLencode 介绍 5.2 认识“方法…

同一数据集(相同路径)的 FID 为负数

公众号:EDPJ 先说结论:这是算法中对复数取实部的结果,对 FID 的影响不大。 FID是从原始图像的计算机视觉特征的统计方面,来衡量两组图像的相似度,是计算真实图像和生成图像的特征向量之间距离的一种度量。 这种视觉特…

CASS数据带属性转GIS的shp数据教程

一、数据:DWG文件中含有JZD(宗地层),JZP(界址点层),其中JZP中含有界址点号,实现JZD层转成ZD的shp数据;JZP转成JZD点的shp数据,并带出界址点号。 二、实现原理…

flutter 导出iOS问题2

问题1:The Swift pod FirebaseCoreInternal depends upon GoogleUtilities, which does not define modules. To opt into those targets generating module maps (which is necessary to import them from Swift when building as static libraries) 参考 正如上图报错第三方…

基于P2P技术的远距离传输大型文件解决方案

随着互联网的普及和数据存储的快速发展,远距离传输大型文件成为一种常态。传统的文件传输方式,如邮件、FTP等,通常只适用于小型文件的传输,对于大型文件的传输则效率低下并且很容易遇到传输失败的问题。面对这个问题,P…

一起学算法(位运算篇)

1.位运算 1.二进制数值表示 在计算机中,我们可以用单纯的0和1来表示数字,一般不产生歧义,我们会在数字的右下角写上它的进制,例如:1010(10)其表示的是1010,1010(2&#…

职工管理系统C++

1、管理系统需求 职工管理系统可以用来管理公司内所有员工的信息 本教程主要利用C来实现一个基于多态的职工管理系统 公司中职工分为三类:普通员工、经理、老板,显示信息时,需要显示职工编号、职工姓名、职工岗位、以及职责 普通员工职责…

一文了解JavaScript 与 TypeScript的区别

TypeScript 和 JavaScript 是两种互补的技术,共同推动前端和后端开发。在本文中,我们将带您快速了解JavaScript 与 TypeScript的区别。 一、TypeScript 和 JavaScript 之间的区别 JavaScript 和 TypeScript 看起来非常相似,但有一个重要的区…

CASAIM自动化平面度检测设备3D扫描零部件形位公差尺寸测量

平面度是表面形状的度量,指示沿该表面的所有点是否在同一平面中,当两个表面需要连接在一起形成紧密连接时,平面度检测至关重要。 CASAIM自动化平面度检测设备通过搭载领先的激光三维测头和智能检测软件自动获取零部件高质量测量数据&#xf…

Vue 入门(一)

一、注意 Vue 不支持 IE8 及以下的版本,因为 Vue 使用了 IE8 无法模拟的 ECMAScript 5 特性,但它支持所有兼容 ECMAScript 5 的浏览器。 二、创建 Hello Vue Vue.js 的核心是实现了 MVVM 模式,它扮演的角色就是 ViewModel 层,那么…

STM32使用HAL库中外设初始化MSP回调机制及中断回调机制详解

STM32使用HAL库之Msp回调函数 1.问题提出 在STM32的HAL库使用中,会发现库函数大都被设计成了一对: HAL_PPP/PPPP_Init HAL_PPP/PPPP_MspInit 而且HAL_PPP/PPPP_MspInit函数的defination前面还会有__weak关键字 上面的PPP/PPPP代表常见外设的名称为…

Vue配置代理(解决跨域请求)

app.vue <template><div><button click"getStudents">获取学生信息</button><button click"getCars">获取汽车信息</button></div></template><script> import axios from axios export default {…

2.4g遥控卧室床头氛围灯开发方案

台灯作为我们日常生活的照明工具&#xff0c;不但给我们的生活提供了很大的便利&#xff0c;而且也丰富了我们的世界。随着电子产品的快速发展&#xff0c;家用电器逐渐趋向智能化&#xff0c;台灯也更加智能。智能台灯以2.4g合封芯片为主控芯片&#xff0c;实现遥控器控制台灯…

依托大数据信息技术构建智慧水务系统,推动城市供水快速发展

随着城市化进程的步伐大大变快&#xff0c;城市建设与科学信息技术的融合程度也在不断提升&#xff0c;尤其是大数据信息技术的迅猛发展&#xff0c;为民生工程由信息化向智能化转型提供了条件。以城市的水务系统为例&#xff0c;依托大数据信息技术构建智慧水务系统是智慧城市…

bigemap工程工程行业应用

客户目前主要是需求为使用下载卫星图、等高线、水系、路网等等元素数据做线路规划图 其他信息 客户需要的图中还包含一些农作物以及需要在软件上标注带有箭头的线段&#xff08;不能满足&#xff09; 如下图&#xff1a; 使用场景&#xff1a; 目前主要为制图、规划线路等等…

【mysql】—— 数据类型详解

序言&#xff1a; 本期我将大家认识关于 mysql 数据库中的基本数据类型的学习。通过本篇文章&#xff0c;我相信大家对mysql 数据类型的理解都会更加深刻。 目录 &#xff08;一&#xff09;数据类型分类 &#xff08;二&#xff09;数值类型 1、tinyint类型 2、bit类型 …

Cilium系列-9-主机路由切换为基于 BPF 的模式

系列文章 Cilium 系列文章 前言 将 Kubernetes 的 CNI 从其他组件切换为 Cilium, 已经可以有效地提升网络的性能. 但是通过对 Cilium 不同模式的切换/功能的启用, 可以进一步提升 Cilium 的网络性能. 具体调优项包括不限于: 启用本地路由(Native Routing)完全替换 KubeProx…

Godot在多边形内随机获取点

前言&#xff1a; 我做了一个随机生成器&#xff0c;可以生成游戏道具&#xff0c;之前是矩形比较好算&#xff0c;随着关卡设计我需要多边形的生成方式。 在矩形内获取随机点&#xff1a; func generateRandomCoordinateInRect(pos,size):"""根据范围生成随机…