一文3000字从0到1手把手教你基于PostMan的接口自动化测试

news2024/11/15 7:10:37

临近下半年,公司任务也不是很多,趁这个机会老大让我研究了一下PostMan的脚本自动化测试。作为一个前端开发,说实话,对于PostMan的操作,仅仅限于新建请求->填写url地址和参数->send发送,然后看看返回值而已。事实上,PostMan的功能还是非常强大的,我也搜了许多资料,整理出一篇比较详细的文档

理解pm对象
pm对象 - 是PostMan中非常核心的一个对象。包含与正在执行的脚本有关的所有信息,并允许访问正在发送的请求的副本或接收到的响应,还允许获取和设置环境变量和全局变量

pm对象内部的核心功能(属性)
pm.info -- info对象包含与正在执行的脚本有关的信息(请求名称、请求id、请求次数....)
pm.variables/pm.environment/pm.global -- 变量管理
pm.request -- 当前脚本所在的请求
pm.response -- 当前脚本所在请求的响应结果
pm.cookies -- 包含与请求域相关联的cookie列表
pm.test -- test函数用于编写测试脚本
pm.expect -- 断言函数
pm上的方法(此部分不需死记,需要的时候查找就ok)
pm.info对象

pm.globals对象

 pm.environment对象

pm.variables对象

 pm.request对象

 pm.response对象

PostMan中的Test

在postman中用于测试、断言的函数主要有

理解变量
全局变量,一但声明了全局变量,全局有效。在postman中的任何集合、任何请求中都可以使用这个变量。作用域最大
集合变量,集合变量是针对集合的,声明的变量必须是基于某个集合,使用范围也只是针对某个集合有效
环境变量,声明环境变量,首先要创建环境,然后在环境中才能创建变量,如果想要使用这个环境变量,必须先选择这个环境.环境可以创建多个,每个环境下又可以有多个变量

 上图展示了postman中变量的关系,由小到大依次为 data->local->-environment->clooection->global。local变了暂时我还没研究,data对象下面我会讲到

定义变量(环境变量&全局变量)

定义变量(集合变量)

使用变量
1.在请求参数中使用变量:{{变量名}},请求参数包括URL、Params、Authorization、Headers、Body

2.在Tests或者Pre-request Script中获取变量

获取全局变量 - pm.globals.get("变量名")
获取集合变量 - pm.collectionVariables.get("变量名")
获取环境变量 - pm.environment.get("变量名")

外部文件实现数据参数化(导入csv文件)

实现步骤

1.创建数据文件,支持的格式为csv和json
2.请求中替换参数变量,{{}}或者data.xxx(我们导入的csv文件中的字段,可以直接通过data对象访问)
3.选择集合->点击Run->选择对应数据文件
复制代码

 断言

    //pm.expect是一个通用的断言函数,主要与pm.test联合使用,常见的用法如下
    pm.test("testName",function(){
        pm.expect('xxx').to.include('xxx');
    })
    // pm.expect()接收一个断言内容(实际结果,一般为response返回的结果)
    // .to 是连接符,用于连接断言与判断,这些连接符不会对结果造成任何影响,只是让断言语句更复核英文语法。连接符包括to,be,been,is,that,which,and,has,have,with,at,of,same
    //.include()断言方式,接收预期结果
复制代码

常用的断言方式
.equal(value)--断言是否严格相等
.not--取非,对之后的断言无条件取反
.include(value)/.contains(value)--表示实际结果是否包含预期结果
.ok/.true--断言目标为真

Newman
介绍

Newman是一款基于node.js开发的可以运行postman的工具,可以直接从命令行运行和测试postman集合

安装

npm install -g newman - 安装newman
npm intall -g newman-reporter-html - 安装生成html报告时需要的插件

语法
newman run xxx.json -d xxx.json/xxx.csv

run xxx.json - 标识要执行的postman脚本,就是我们导出的集合
-d xxx.json/xxx.csv - 标识要执行的数据data,就是我们自定义的参数文件

生成html格式的报告
newman run xxx.json -d xxx.json/xxx.csv -r html --reporter-html-export /Users/lz01/Desktop/tdtest.html
默认将html报告保存在当前目录下,如想保存到指定目录,在文件名前加路径即可

结尾
以上就是postman配合newman的使用,我们可以把每个接口需要的参数和期望的状态导入csv文件或者json,然后通过命令就能直接测试出每次的结果,节省了大量的测试时间。至于集成到Jenkins上实现真正的自动化测试,这个还的我们老大来搞,能力有限就不多介绍了,有兴趣的小伙伴可以自行查看

今天的分享就到此结束了, 如果文章对你有帮助,记得点赞,收藏,加关注。会不定期分享一些干货哦......

最后感谢每一个认真阅读我文章的人,看着粉丝一路的上涨和关注,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:

 这些资料,对于从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!凡事要趁早,特别是技术行业,一定要提升技术功底。希望对大家有所帮助……如果你不想再体验一次自学时找不到资料,没人解答问题,坚持几天便放弃的感受的话,可以加入下方我们的测试交流群大家一起讨论交流学习。

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

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

相关文章

智能排班系统 【开源说明】

文章目录 引言说明讲讲开源开源要做什么了解开源协议项目的信息脱敏写好项目说明文档修改.gitignore 项目不完善点说明管理系统前端页面自适应做得不好部分页面体验不好 管理系统后端接口缺乏数据校验数据管理接口查询不够完善接口可以更加完善 开源仓库地址其他文章引用说明前…

【我的创作纪念日】—— 纪念四年的坚持

这是一篇和技术无关的博客,但对我而言,它承载了不菲的价值 普通且宁静的一天,被一条消息戳中,于是,写一篇分享帖,纪念我这 1460 天的坚持初衷: 前言:对过去的回顾 4 年前的我&#…

南京邮电大学算法与设计实验二:贪心算法(最全最新,与题目要求一致)

三、实验原理及内容 实验原理: 1、用贪心法实现求两序列的一般背包问题。要求掌握贪心法思想在实际中的应用,分析一般背包的问题特征,选择算法策略并设计具体算法,编程实现贪心选择策略的比较,并输出最优解和最优解值。…

图的遍历,最小生成树,最短路径算法的手算。

1.图的遍历 按照某种规则沿着图中的边对图中的所有顶点访问一次且仅访问一次。 注:图是一种特殊的树。 1.广度优先遍历BFS 不难看出,图的广度优先就是参照的树的层次遍历算法。 2.深度优先遍历 从某个顶点开始V,访问这个顶点V相邻的任意…

【音视频开发】视频编码格式:YUV

文章目录 分类标准分类 简介 参考:YCbCr与YUV 分类标准 首先,我们可以将 YUV 格式按照数据大小分为三个格式,YUV 420,YUV 422,YUV 444。由于人眼对 Y 的敏感度远超于对 U 和 V 的敏感,所以有时候可以多个 …

位运算符及其相关操作详解

位运算符详解 前言:由于位运算符是直接对二进制数操作,因此对二进制、八进制、十六进制不甚了解的小伙伴建议先看这篇二进制、八进制、十六进制与十进制的相互关系,这样阅读本篇时将事半功倍 总览 位运算是对计算机存储的二进制序列的相应位进…

【笔试强训选择题】Day17.习题(错题)解析

作者简介:大家好,我是未央; 博客首页:未央.303 系列专栏:笔试强训选择题 每日一句:人的一生,可以有所作为的时机只有一次,那就是现在!!! 前言 目…

南京邮电大学算法与设计实验三:动态规划法(最全最新,与题目要求一致)

实验原理: 1、用动态规划法和备忘录方法实现求两序列的最长公共子序列问题。要求掌握动态规划法思想在实际中的应用,分析最长公共子序列的问题特征,选择算法策略并设计具体算法,编程实现两输入序列的比较,并输出它们的…

Linux之NetLink学习笔记

1.NetLink机制 NetLink是一种基于应用层跟内核态的通信机制,其特点是一种异步全双工的通信方式,支持内核态主动发起通信的机制。该机制提供了一组特殊的API接口,用户态则通过socket API调用。内核发送的数据再应用层接收后会保存在接收进程socket的缓存…

MediaPipe虹膜检测:实时虹膜跟踪和深度估计

包括计算摄影(例如,人像模式和闪光反射)和增强现实效果(例如,虚拟化身)在内的大量实际应用都依赖于通过跟踪虹膜来估计眼睛位置。一旦获得了准确的光圈跟踪,我们就可以确定从相机到用户的公制距离,而无需使用专用的深度传感器。反过来,这可以改善各种用例,从计算摄影…

《Kali渗透基础》01. 介绍

kali渗透 1:渗透测试1.1:安全问题的根源1.2:安全目标1.3:渗透测试1.4:标准 2:Kali2.1:介绍2.2:策略2.3:安装 3:Kali 初步设置3.1:远程连接3.1.1&a…

深度学习之全过程搭建卷积神经网络(CNN)

大家好,我是带我去滑雪! 本期将尝试使用CIFAR-10 数据集搭建卷积神经网络,该数据集由 10 个类别的 60000 张 32x32 彩色图像组成,每个类别有 6000 张图像。 下面开始全过程搭建CNN识别彩色图片: 目录 (1&a…

【Linux】冯诺依曼与操作系统

目录 一、冯诺依曼结构体系1、冯诺依曼结构体系简介2、为什么要有内存呢? 二、操作系统1、操作系统如何对硬件进行管理?2、操作系统为什么要对软硬件进行管理? 一、冯诺依曼结构体系 1、冯诺依曼结构体系简介 在现实生活中,我们…

KEYSIGHT MSOS204A 2GHZ 4通道DSOS204A高清晰度示波器

KEYSIGHT是德DSOS204A/MSOS204A高清晰度示波器 附加功能: 2 GHz 带宽(可升级) 4 个模拟通道和 16 个数字通道 最大存储深度:800 Mpts(2 通道),400 Mpts(4 通道) 最大…

菱形继承、菱形虚拟继承、以及菱形虚拟继承的模型结构内部。

1. 单继承:一个子类只有一个直接父类。 多继承:一个子类有两个或以上直接父类。 菱形继承:菱形继承是多继承的一种特殊情况。 下面是代码和对象模型结构,可以看出菱形结构存在哪些问题,如下: #define _CR…

学习经验分享【30】Pycharm插件chatgpt,用来辅助编写代码

在Pycharm中发现ChatGPT插件,很好用,免费安全,大家可以作为编代码的辅助工作,也可用来玩GPT的接口。具体方法如下 实现效果如下: 更多精彩内容敬请持续关注。如果本博文对你有帮助的话,欢迎点赞、评论区留言…

BUUCTF-一叶障目 解析

打开文件发现一张png图片,里面没有内容,使用tweakpng打开 tweakpng报错 ,说明crc校验值对不上 有两种可能,一是crc值被修改,二是图片的宽高被修改(在ctf中多半是后者) 先尝试修改crc值为55900…

【王道·计算机网络】第五章 传输层

一、传输层概述 传输层为应用层提供通信服务,使用网络层服务传输层的功能: 提供进程和进程之间的逻辑通信(网络层提供主机之间的逻辑通信)复用(发送发不同的应用进程)和分用(接收方正确的数据传…

【网络协议详解】——PPP协议(学习笔记)

目录 🕒 1. 数据链路层协议概述🕒 2. PPP协议分析🕘 2.1 概述🕘 2.2 工作流程🕘 2.3 帧格式 🕒 3. LCP协议🕘 3.1 概述🕘 3.2 报文格式🕘 3.3 报文种类🕤 3.3…

3年经验,面试测试岗只会功能测试开口要求18K,令我陷入沉思

由于朋友临时有事, 所以今天我代替朋友进行一次面试,公司需要招聘一位自动化测试工程师,我以很认真负责的态度完成这个过程, 大概近30分钟。 主要是技术面试, 在近30分钟内, 我与被面试者是以交流学习的方式…