当前位置: 首页 > news >正文

深入Postman- 自动化篇

前言

在前两篇博文《Postman使用 - 基础篇》《玩转Postman:进阶篇》中,我们介绍了 Postman 作为一款专业接口测试工具在接口测试中的主要用法以及它强大的变量、脚本功能,给测试工作人员完成接口的手工测试带来了极大的便利。其实在自动化测试上,Postman 也能进行良好的支持。本篇我们就一起来了解如何利用 Postman 进行接口自动化测试。

自动化测试概述

在继续本篇内容前,我们还是首先温习一下和自动化测试相关的一些基本概念。
百度百科中给出的定义:

自动化测试就是将人为驱动的测试行为转化为通过机器来执行的一种过程。

人为驱动的测试行为,从广义上理解可以包含从测试需求分析到测试设计、测试执行以及测试总结的全过程,而狭义的理解一般就是将测试设计通过测试代码来体现并通过代码的执行来自动地完成测试的执行并输出执行结果。
现在我们谈到自动化测试,更多还是在狭义层面,通过自动化测试来提升测试执行效率,通过快速得到测试用例的执行结果来尽快得到被测产品状态,更多是起到质量指示器的作用。

在《Postman使用 - 基础篇》中我们介绍了经典的自动化测试金字塔:

image

这里根据不同测试类型对软件测试进行了分层:

  • 底层是针对的代码层面的单元测试。
  • 中间层是 service 服务测试,现代软件的应用服务基本都是以接口 API 形式来体现,服务测试也可以理解就是接口 API 测试。
  • 上层则是针对用户界面的测试。

这个模型体现在自动化测试中,表示越底层的自动化测试所占比重应该越大,这样才有更好的投入产出比。而中间这一层的 Service 测试它既不像 UI 层那样维护成本巨大,很难跟得上快速迭代的要求,同时它又比单元测试更能在业务逻辑上进行质量验证。所以现在一般认为 API 测试是自动化测试实施上的优先选择。

借助一些自动化测试工具或者自动化测试框架的帮助,我们可以在测试执行的用例组织、执行策略、测试数据管理、结果报告等方面更加方便地进行自动化测试的实施。下面我们就来看看 Postman 在自动化测试上提供的支持。

Postman的批量执行工具 Runner

Runner 是 Postman 中用于批量执行接口用例的模块,我们可以通过 Runner 模块来完成已编写接口用例的自动化测试执行。

Runner 功能介绍

在 Postman 主界面左上角,点击 Runner 按钮,即可打开 Runner 模块界面。如下图

image

相关设置的作用如图上标注。选中待执行的 Collection 或 Folder 后,点击运行按钮,会开启如下运行页面,并显示执行结果。相关界面元素含义如图上标注

image

接口的测试数据驱动

Postman 通过 引入 data 变量来支持 Runner 运行时的测试数据加载和数据驱动。在上一篇 Chat《玩转Postman:进阶篇》中,我们简单介绍了 data 变量的使用方法。这里我们再结合一个 GitHub API 的例子回顾一下:

数据文件中给出一组 Repositories 的信息(测试数据),我们运行一个和这组数据相关的接口:获取 repo、获取 repo 的 contributor、获取 repo 的 tag、获取 repo 的 topic,并分别进行相关校验

Postman 支持两种外部数据类型,json 格式或者 txt/csv 格式。这里我们假设将 repositories 数据以 json 格式保存在数据文件中,给出如下一些主流的开源自动化测试框架

[{"owner": "junit-team","repo": "junit5"
}, {"owner": "robotframework","repo": "robotframework"
},{"owner": "appium","repo": "appium"
},{"owner": "SeleniumHQ","repo": "selenium"
}]

在 Test 脚本中编写校验,在上一讲中我们提到一个技巧,对于重复使用的脚本我们可以把它们保存到 global 变量中,需要时执行这个变量内容即可。本例中我们需要执行的几个接口,都会用到是否正确返回成功响应的校验。
所以可以设置一个 global 变量 checkOK。变量值即需要执行的校验脚本

image

不同的接口中均包含了相应 repo 信息作为路径参数,然后我们再添加对应的校验

  • 获取 repo 接口

/repos/:owner/:repo

eval(pm.globals.get("checkOK"));
//判断是否存在 stargazers_count 字段
pm.test("存在 Star 数据",function(){pm.response.to.have.jsonBody("stargazers_count")//获取 star 数量let star = pm.response.json().stargazers_count// 将Star数显示到Test Result中,并判断是否 超过 1000 Starpm.test("当前repo【"+ pm.variables.get("repo") +"】star数【"+ star +"】超 1000",

相关文章:

深入Postman- 自动化篇

前言 在前两篇博文《Postman使用 - 基础篇》《玩转Postman:进阶篇》中,我们介绍了 Postman 作为一款专业接口测试工具在接口测试中的主要用法以及它强大的变量、脚本功能,给测试工作人员完成接口的手工测试带来了极大的便利。其实在自动化测试上,Postman 也能进行良好的支…...

react-JSX

JSX理念 jsx在编译的时候会被babel编译为react.createELement方法 在使用jsx的文件中,需要引入react。import React from "react" jsx会被编译为React.createElement,所有jsx的运行结果都是react element React Component 在react中,常使用…...

深度对比:IPguard与Ping32在企业网络管理中的应用

随着网络安全形势日益严峻,企业在选择网络管理工具时需慎之又慎。IPguard与Ping32是目前市场上两款颇具代表性的产品,它们在功能、性能以及应用场景上各有优势。本文将对这两款产品进行深度对比,以帮助企业找到最合适的解决方案。 IPguard以其…...

AI测试之 TestGPT

如今最火热的技术莫非OpenAI的ChatGPT莫属,AI技术也在很多方面得到广泛应用。今天我们要介绍的TestGPT就是一个软件测试领域中当红的应用。 TestGPT是什么? TestGPT是一家总部位于以色列特拉维夫的初创公司 CodiumAI Ltd.,发布的一款用于测…...

JavaEE-进程与线程

1.进程 1.1什么是进程 每个应⽤程序运⾏于现代操作系统之上时,操作系统会提供⼀种抽象,好像系统上只有这个程序在运 ⾏,所有的硬件资源都被这个程序在使⽤。这种假象是通过抽象了⼀个进程的概念来完成的,进程可 以说是计算机科学…...

JAVA软开-面试经典问题(6)-equals与hashcode方法

1.equals方法 1.Object类中的equals方法比较的是两个对象的地址(底层原理是 比较的,即比较的是对象的地址) return (this obj);2.基本数据类型的包装类和String类都重写了equals方法。 基本数据类型:比较的是数值的是否相等 …...

计算机网络(以Linux讲解)

计算机网络 网络协议初识协议分层OSI七层模型TCP/IP五层模型--初识 网络中的地址管理IP地址MAC地址 网络传输基本流程网络编程套接字预备知识网络字节序socket编程UDP socketTCP socket地址转换函数Jsoncpp 进程间关系与守护进程进程组会话控制终端作业控制守护进程 网络命令TC…...

计算机网络基本架构知识点

1. 网络体系结构模型: - OSI 七层模型: - 物理层:是网络通信的基础层,负责在物理介质上传输比特流。该层定义了物理连接的标准,如电缆的类型、接口的形状、插头的规格等,以及信号的传输方式,包括…...

GES DISC 的 ATMOS L2 潜在温度网格上的痕量气体,固定场格式 V3 (ATMOSL2TF)

ATMOS L2 Trace Gases on Potential Temperature Grid, Fixed Field Format V3 (ATMOSL2TF) at GES DISC 简介 GES DISC 的 ATMOS L2 潜在温度网格上的痕量气体,固定场格式 V3 (ATMOSL2TF) 这是版本3的气溶胶痕量分子光谱(ATMOS)第二级产品…...

MLCC贴片电容不同材质区别:【及电容工作原理】

贴片电容的材质常规有:NPO(COG),X7R,X5R,Y5V 等,主要区别是它们的填充介质不同。在相同的体积下由于填充介质不同所组成的电容器的容量就不同,随之带来的电容器的介质损耗、容量稳定…...

Word粘贴时出现“文件未找到:MathPage.WLL”的解决方案

解决方案 一、首先确定自己电脑的位数(这里默认大家的电脑都是64位)二、右击MathType桌面图标,点击“打开文件所在位置”,然后分别找到MathPage.WLL三、把这个文件复制到该目录下:C:\Program Files\Microsoft Office\r…...

前端开发笔记--html 黑马程序员1

文章目录 前端开发工具--VsCode前端开发基础语法VsCode优秀插件Chinese --中文插件Auto Rename Tag --自动重命名插件open in browserOpen in Default BrowserOpen in Other Browser Live Server -- 实时预览 前端开发工具–VsCode 轻量级与快速启动 快速加载:VSCo…...

ARM/Linux嵌入式面经(四四):华星光电

文章目录 1、自我介绍2、介绍一下你最得意的一个项目3、这个项目里面都用到了什么模块,什么型号,有什么作用4、移植操作系统的过程中,流程是什么,需要注意什么移植操作系统的流程需要注意的事项面试官可能的追问及回答5、你用的传感器挺多的,怎么保证传感器传输的稳定性,…...

帮助,有奖提问

<?php $u $_GET[“user”]; //变量获取 $v $_GET[“variable”]; //$v看flag&#xff0c;绕过正则 $flag‘flag{}; if(isset($u)&&(file_get_contents($u,‘r’)“im admin”)){//猜测data://协议 //检查u指向 echo “hello admin!<br>”; if(preg_…...

Java编辑工具IDEA

哪个编程工具让你的工作效率翻倍&#xff1f; 在日益繁忙的工作环境中&#xff0c;选择合适的编程工具已成为提升开发者工作效率的关键。不同的工具能够帮助我们简化代码编写、自动化任务、提升调试速度&#xff0c;甚至让团队协作更加顺畅。那么&#xff0c;哪款编程工具让你…...

闲谈Promise

预备知识 回调函数&#xff1a;当一个函数作为参数传入另一个函数中&#xff0c;并且它不会立刻执行&#xff0c;当满足一定条件之后&#xff0c;才会执行&#xff0c;这种函数称为回调函数。比如&#xff1a;定时器。异步任务&#xff1a;与之对应的概念是同步任务&#xff0…...

【C++堆(优先队列)】1882. 使用服务器处理任务|1979

本文涉及知识点 C堆(优先队列) LeetCode1882. 使用服务器处理任务 给你两个 下标从 0 开始 的整数数组 servers 和 tasks &#xff0c;长度分别为 n​​​​​​ 和 m​​​​​​ 。servers[i] 是第 i​​​​​​​​​​ 台服务器的 权重 &#xff0c;而 tasks[j] 是处理…...

VBA高级应用30例应用3Excel中的ListObject对象:选择表的一部分

《VBA高级应用30例》&#xff08;版权10178985&#xff09;&#xff0c;是我推出的第十套教程&#xff0c;教程是专门针对高级学员在学习VBA过程中提高路途上的案例展开&#xff0c;这套教程案例与理论结合&#xff0c;紧贴“实战”&#xff0c;并做“战术总结”&#xff0c;以…...

C语言-变量

全局变量可以定义在头文件中吗&#xff1f; 在C和C编程中&#xff0c;全局变量可以定义在头文件中&#xff0c;但通常不建议这样做&#xff0c;因为这可能导致多个源文件&#xff08;.c 或 .cpp 文件&#xff09;包含同一个头文件时&#xff0c;发生多重定义错误&#xff08;m…...

linux下位机出现使用TCP socket为0的问题

问题现象&#xff1a;下位机做TCP服务器&#xff0c;上位机来连接下位机的TCP服务&#xff0c;中间会有主动断开&#xff08;上位机主动关闭socket&#xff09;和异常断开&#xff08;网线断开&#xff09;的情况&#xff0c;出现异常的时候&#xff0c;上位机连接下位机的TCP …...

Python|GIF 解析与构建(5):手搓截屏和帧率控制

目录 Python&#xff5c;GIF 解析与构建&#xff08;5&#xff09;&#xff1a;手搓截屏和帧率控制 一、引言 二、技术实现&#xff1a;手搓截屏模块 2.1 核心原理 2.2 代码解析&#xff1a;ScreenshotData类 2.2.1 截图函数&#xff1a;capture_screen 三、技术实现&…...

OpenLayers 可视化之热力图

注&#xff1a;当前使用的是 ol 5.3.0 版本&#xff0c;天地图使用的key请到天地图官网申请&#xff0c;并替换为自己的key 热力图&#xff08;Heatmap&#xff09;又叫热点图&#xff0c;是一种通过特殊高亮显示事物密度分布、变化趋势的数据可视化技术。采用颜色的深浅来显示…...

树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频

使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源&#xff1a; http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

智能仓储的未来:自动化、AI与数据分析如何重塑物流中心

当仓库学会“思考”&#xff0c;物流的终极形态正在诞生 想象这样的场景&#xff1a; 凌晨3点&#xff0c;某物流中心灯火通明却空无一人。AGV机器人集群根据实时订单动态规划路径&#xff1b;AI视觉系统在0.1秒内扫描包裹信息&#xff1b;数字孪生平台正模拟次日峰值流量压力…...

PAN/FPN

import torch import torch.nn as nn import torch.nn.functional as F import mathclass LowResQueryHighResKVAttention(nn.Module):"""方案 1: 低分辨率特征 (Query) 查询高分辨率特征 (Key, Value).输出分辨率与低分辨率输入相同。"""def __…...

IP如何挑?2025年海外专线IP如何购买?

你花了时间和预算买了IP&#xff0c;结果IP质量不佳&#xff0c;项目效率低下不说&#xff0c;还可能带来莫名的网络问题&#xff0c;是不是太闹心了&#xff1f;尤其是在面对海外专线IP时&#xff0c;到底怎么才能买到适合自己的呢&#xff1f;所以&#xff0c;挑IP绝对是个技…...

群晖NAS如何在虚拟机创建飞牛NAS

套件中心下载安装Virtual Machine Manager 创建虚拟机 配置虚拟机 飞牛官网下载 https://iso.liveupdate.fnnas.com/x86_64/trim/fnos-0.9.2-863.iso 群晖NAS如何在虚拟机创建飞牛NAS - 个人信息分享...

基于PHP的连锁酒店管理系统

有需要请加文章底部Q哦 可远程调试 基于PHP的连锁酒店管理系统 一 介绍 连锁酒店管理系统基于原生PHP开发&#xff0c;数据库mysql&#xff0c;前端bootstrap。系统角色分为用户和管理员。 技术栈 phpmysqlbootstrapphpstudyvscode 二 功能 用户 1 注册/登录/注销 2 个人中…...

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的----NTFS源代码分析--重要

根目录0xa0属性对应的Ntfs!_SCB中的FileObject是什么时候被建立的 第一部分&#xff1a; 0: kd> g Breakpoint 9 hit Ntfs!ReadIndexBuffer: f7173886 55 push ebp 0: kd> kc # 00 Ntfs!ReadIndexBuffer 01 Ntfs!FindFirstIndexEntry 02 Ntfs!NtfsUpda…...

关于easyexcel动态下拉选问题处理

前些日子突然碰到一个问题&#xff0c;说是客户的导入文件模版想支持部分导入内容的下拉选&#xff0c;于是我就找了easyexcel官网寻找解决方案&#xff0c;并没有找到合适的方案&#xff0c;没办法只能自己动手并分享出来&#xff0c;针对Java生成Excel下拉菜单时因选项过多导…...