我一口气记录下整个接口自动化测试过程!
一、为什么选用postman
postman调试工具无论对于开发和测试小白,还是技术大牛来说应该都耳熟能详,在过去的几年里大家对这款工具应用最广的用途是把当作接口调试的测试工具,它能发送几乎所有类型的HTTP请求,操作界面非常简洁美观(大家来欣赏下图),支持抓包,保存历史记录,有用户组管理机制,方便多端同步用例等等。最主要的是各位小伙伴已经对它用于接口调试的功能非常熟悉,已经为我们接下来使用它做持续集成的接口自动化打下了良好的基础。
二、postman 基础知识
相信大家使用postman来调试接口应该是相当熟悉了,所以还不懂使用的同学可以在网上找到相关的资料(非常多),或者直接查阅官网,我建议大家还是要学会看官方文档,度娘很多教程可能会不全或者已经过时了,官网是最新最全的学习文档,不懂就慢慢看,这篇文章只能带着大家入门,修行只能靠自己(微笑)。
官方文档:
https://learning.getpostman.com/docs/postman/launching_postman/
1、postman版本选择
postman分为chrome插件版和native版本,插件版的有很多功能都受限制,比如:必须要安装扩展才可以操作cookie,headers设置受限制,没有native版本的Postman console,非常不方便调试等,不方便我们后续做接口自动化,所以版本必须选择native版,版本号用最新的就可以。
工具下载:
https://www.getpostman.com/downloads/
2、postman代理抓包
由于postman不是类似fiddle这种专门用于抓包的软件,fiddler软件安装后默认打开抓包功能,默认端口是8888,但是postman需要自己手动打开代理设置。设置方法如下:
①点击右上角的拦截图标,打开【Capture requests】,设置好Port和Target
注意Capture requests按钮一定是要处于on的状态;
Port:就是端口,只要不设置系统和浏览器的冲突端口就可以,比如9999;
Target:就是抓到的HTTP包存放的目标地,我一般选择放在history,方便查看。
②打开浏览器的代理设置,设置相同端口
打开浏览器,找到代理服务器,将地址修改为本地机器的ip地址,端口设置为第①步设置的端口号,点击确定即可。
我们演示的这个设置方法是以PC端为例子,有些同学需要抓APP端的包。设置方法原理也大概相同,大家可以参看官网文档中的设置方法即可。
移动端设置方法:
https://learning.getpostman.com/docs/postman/sending_api_requests/capturing_http_requests
3、postman调试控制台
打开左下角打开【postman console】控制台,当我们某个测试用例跑不通的时候需要调试,可以打开这个postman的控制台方便查看接口调试的打印信息,当然我们后续用js写的脚本可以在控制台中看到输出信息。
4、postman 发送请求
发送请求是postman最核心的功能,如下图选择好请求方式及接口地址、相应参数,点击发送即可。有两个地方强调下:
①需要发送上传文件的请求,在body中选择选择form-data ,选择File选项后即可选择文件
②可以将请求头统一管理,打开任意一个请求tab,点击Headers->Presets->Manage Presets可以设置好请求头信息,下一个请求再需要相同的请求头便可以从这里读取。
三、postman 变量与集合
1、什么是变量
首先我们来思考一个问题,为什么要使用变量,如果某个参数值只需要在某个独立接口的使用一次,那么我们可以不使用变量,但是如果变量需要在多个位置重复使用,或者发生接口传递(即前一个接口的返回值用于下一个接口的请求参数),那么借助变量,postman就可以实现业务逻辑与测试数据分离,帮助我们建立健壮的测试用例。
2、变量的作用域
全局变量(Global):主要用于需要在多个位置重复使用的几乎不改变的数据
环境变量(environment):主要用于接口传递的参数
局部变量(local):集合/文件/接口中 某个js脚本中的变量
数据变量(data):主要用于并发测试(json/csv文件)
同变量名的情况下,优先级范围:局部变量>数据变量>环境变量>全局变量
3、如何设置变量
设置变量的方法有两种:
① 在postman的ui上进行定义:如下图所示
② 使用脚本定义,在Test选项卡中填入脚本:
pm.environment.set("new_name", "zhougang");
4、如何使用变量
使用变量也是有两种写法,用在不同的场景中
① 在Builder中使用:{{varname}},一般用于请求头、请求体、请求地址中
② 在js 脚本中使用:pm.environment.get("variable_key"),一般用于Test或pre-request Script选项卡中
5、集合
我们为什么要使用集合以及使用集合的好处在哪?
①可以组织业务逻辑:分类和存储接口
②方便一键运行:在runner中选择要运行的集合或者里面的文件夹进行运行
③方便导入导出:导出和导入json文件,如使用newman在命令行执行;
注意点:集合和变量的导出是分开的。
④方便分享:分享至自己团队的共享目录下
基于以上几点,我们想要写出好维护且高效的接口测试用例,一定要好好利用集合。
四、postman脚本应用–接口断言
前三节内容我们了解到了做自动化测试前必须掌握的基础知识,这一节我们进入到接口自动化测试中的核心内容:如何判断一个接口的返回值与期望值相符,也就是我们说的接口断言成功。这个时候postman的测试沙箱sandbox就发挥了巨大的作用。官方解释:Postman sandbox沙箱是一个JavaScript执行环境,在编写pre-request scripts 和 test scripts编写的脚本在此沙箱中执行(Postman和Newman中都可以使用)
①在请求发送前,在“pre-request script”选项卡下输入脚本,主要用于设置测试需要的测试参数
②在请求发送后,在“test”选项卡下输入脚本,主要用于做断言。
③因此如果我们需要断言一个接口返回是否是预期值,可以参考如下例子:
1)判断code是不是返回200
var jsonData = pm.response.json();
pm.test("操作是否成功", function () {
pm.expect(jsonData.code).to.eql(200);
});
2)判断字段是不是跟预期值相等
tests["名称是否正确"] = jsonData.data.name === pm.environment.get("customer_contract_name");
3)判断返回时间是否在预期2000ms内
pm.test("接口返回时间是否超过2s", function () {
pm.expect(pm.response.responseTime).to.be.below(2000);
});
4)执行顺序设定(此代码只在runner和Newman中生效):
postman.setNextRequest('接口名称');
上边的例子都可以在工具的右侧找到事例,大大节省我们编写断言的时间,如果这里没有你需要的,可以查看帮助文档
https://learning.getpostman.com/docs/postman/scripts/postman_sandbox_api_reference/
重点强调:你可以将请求和测试脚本添加到一个集合,一个文件夹,一个请求中,优先级是:请求>文件夹>集合。举个例子,判断返回时间的断言就可以放在集合或者文件中,因为多个接口可以共用这一个断言。
五、postman接口自动化
前面我们已经做好了各种准备工作,包括抓包、编写接口、存入集合、设置变量、断言等,接下来就可以把我们的接口自动的跑起来。
1、使用postman自带的 runner工具
①按照下图进入runner页面,在runner中选择要运行的collection或者里面的文件夹进行运行
②enviroment:选择用例跑的环境变量集合
③iterations:接口迭代次数(接口自动化 默认使用1就行,1以上一般拿来做并发测试)
④delay:每个接口发起请求的的间隔时间(建议100ms)
⑤data:数据文件,可以是json格式的,也可以是csv格式的(一般用于并发测试)
⑤keep variable values: 重点!!!必须要勾上,环境变量将会更新
⑥start run:运行结果集,并查看结果页,可导出
运行结果如下显示,示例中34条成功,0条失败。如果有失败的用例可以用控制台查看是请求没发送成功还是断言失败,单独调试。
2、使用postman的插件:Newman
到了这一步,其实我们已经讲完用postman做接口自动化的一个完整过程了。但是再来思考一个问题,如果我要将这个接口自动化测试加入持续集成的环节,并且再给领导发一份这个测试结果的报告呢?这时候 Postman的持续集成方案,便是使用自带的插件Newman + 持续集成工具如Jenkins的结合使用
1)官方说明文档:
https://www.npmjs.com/package/newman(https://www.npmjs.com/package/newman
2)使用Newman运行用例并生成测试报告
①首先需要安装node.js环境(同时安装了npm)
下载地址:http://nodejs.cn/download/
②使用命令行安装 Newman
npm install -g newman
安装导出html报告的包:
npm install -g newman-reporter-html
③Newman运行命令脚本,一般只需要指定运行集合、运行环境、间隔时间,数据文件,指定输出报告的模板和位置
原始脚本:
newman run xxx.json
添加下述定制化参数:
指定运行环境变量集合:
--environment xxx.environment.json
指定输出环境变量集合:
--export-environment xxx.environment.json
指定输出报告形式:
-r cli,html
指定输出报告文件:
--reporter-html-export xxx.htm
指定接口间隔时间:
--delay-request 100
进入脚本所在文件目录,运行最终脚本
newman run cms_init.postman_collection.json --environment cms-test.environment.json --export-environment cms-test.environment.json -r cli,html --reporter-html-export ./reports/cms_init_html_output.htm --delay-request 120
运行结果(命令行):
运行结果(html格式):
3)使用Newman与Jenkins结合
当我们将代码推送到git上后,可以使用jenkins直接构建任务即可,省去了脚本打包放到对应服务器再启用对应环境脚本的麻烦。
参考链接:
https://www.jianshu.com/p/18863c609019
参考链接:
https://blog.csdn.net/qq_16510189/article/details/79074809
①下载jenkins的war包,使用java -jar jenkins.war –httpPort=8080启动, 按照配置jenkins完成
②在Jenkins中安装对应的插件,Git、NodeJS 插件
③新建job,配置相关内容
构建环境配置
构建脚本
选择构建,查看控制台输出信息
六、与钉钉机器人结合
钉钉是我们常用于工作沟通的工具,配合钉钉强大的机器人功能,可以让我们在持续集成的测试环节中实时、快速接收到测试结果的消息推送。
1、建一个自动化测试群,点击群设置-》群机器人
2、选择自定义机器人
3、添加机器人,获取到access token
4、将access token设置到Jenkins中的钉钉通知器插件中(在Jenkins插件中下载安装),最后保存即可
5、Jenkins任务跑完以后,钉钉就会收到消息推送
感谢每一个认真阅读我文章的人!!!
作为一位过来人也是希望大家少走一些弯路,如果你不想再体验一次学习时找不到资料,没人解答问题,坚持几天便放弃的感受的话,在这里我给大家分享一些自动化测试的学习资源,希望能给你前进的路上带来帮助。
软件测试面试文档
我们学习必然是为了找到高薪的工作,下面这些面试题是来自阿里、腾讯、字节等一线互联网大厂最新的面试资料,并且有字节大佬给出了权威的解答,刷完这一套面试资料相信大家都能找到满意的工作。
视频文档获取方式:
这份文档和视频资料,对于想从事【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴我走过了最艰难的路程,希望也能帮助到你!以上均可以分享,点下方小卡片即可自行领取。
相关文章:

我一口气记录下整个接口自动化测试过程!
一、为什么选用postman postman调试工具无论对于开发和测试小白,还是技术大牛来说应该都耳熟能详,在过去的几年里大家对这款工具应用最广的用途是把当作接口调试的测试工具,它能发送几乎所有类型的HTTP请求,操作界面非常简洁美观…...

【VS中Git同步提交 报错:访问.vs/FileContentIndex/xxx.vsidx权限不允许】
参考: Git commit vsidx file access denied in Visual Studio 一劳永逸的方法: 在VSCode里,Git->设置->选项:编辑.gitignore文件,如下图: 忽略整个.vs文件夹,再重新提交就不会有涉及…...

Linux下Nginx的安装与使用
Linux下Nginx的安装与使用 博客: www.lstar.icu 开源地址 Gitee 地址: https://gitee.com/lxwise/iris-blog_parent Github 地址: https://github.com/lxwise/iris-blog_parent 序言 Nginx是一款轻量级的Web 服务器/反向代理服务器及电子…...

飞机布雷盖航程公式
飞机布雷盖航程公式 1. 喷气式飞机布雷盖航程公式推导2. 螺旋桨飞机布雷盖航程公式推导3. 喷气式飞机与螺旋桨飞机的差异分析3.1 喷气式飞机的推力产生机制3.2 螺旋桨推进推力产生机制 布雷盖航程公式(Breguet Range Equation)是描述飞行器巡航飞行阶段航…...

在K8s平台部署个人博客
在K8s平台部署个人博客 实验步骤查看wordpress前端的service浏览器访问http://node_ip:30090 实验步骤 kubectl create secret generic mysql-pass --from-literalpasswordYOUR_PASSWORD把mysql.tar.gz和wordpress.tar.gz上传到K8s工作节点,手动解压即可࿱…...

git入门教程10:git性能优化
一、配置优化 使用SSH协议: 相比HTTP/HTTPS协议,SSH协议在网络传输中更高效,且支持更安全的认证方式。确保你的远程仓库URL使用的是SSH协议,例如:git clone gitgithub.com:username/repo.git。 调整Git缓冲区大小&…...

Redis(2):内存模型
一、Redis内存统计 工欲善其事必先利其器,在说明Redis内存之前首先说明如何统计Redis使用内存的情况。 在客户端通过redis-cli连接服务器后(后面如无特殊说明,客户端一律使用redis-cli),通过info命令可以查看内存使用情…...

深入解析Diffusion和AsymmDiT:Mochi 1的高效AI视频生成之路
随着AI视频生成技术的迅猛发展,各种模型纷纷涌现,各自展现出独特的优势。近期,Genmo 推出了新一代视频生成模型——Mochi 1,以其非对称架构设计和高效生成流程在业界备受瞩目。作为开源模型,Mochi 1不仅在视觉生成质量…...

VMware capacity mismatch for disk错误解决办法:kb-vuln-1靶机
https://www.vulnhub.com/entry/kb-vuln-1,540/ 本机安装有: VMware Workstation 16 Pro 16.2.1 build-18811642VirtualBox 图形用户界面 版本 5.2.30 r130521 (Qt5.6.2) vm16.2支持wsl2,所以我得让vm16.2跑靶机,VirtualBox5.2可以导入靶机,但是无法开机(不支持wsl2),得升级 …...

Java Collection/Executor LinkedTransferQueue 总结
前言 相关系列 《Java & Collection & 目录》《Java & Executor & 目录》《Java & Collection/Executor & LinkedTransferQueue & 源码》《Java & Collection/Executor & LinkedTransferQueue & 总结》《Java & Collection/Execu…...

阿拉伯国家本地化测试的特点
针对阿拉伯国家的应用程序的本地化测试需要详细了解语言、文化背景、地区规范和技术细节,以符合阿拉伯语用户的期望。这些国家包括沙特阿拉伯、阿拉伯联合酋长国、科威特、卡塔尔、巴林和阿曼,具有独特的语言和文化因素,成功地本地化测试解决…...

申请前必知!关于「美国绿卡」的28个常见问题汇总!
01 美国绿卡的类别 美国绿卡分为多个类别,如亲属移民、职业移民、投资移民等。每个类别有不同的申请要求和优先级。选择最适合自己的类别,并深入了解相关法律和政策,是成功申请的第一步。 02 移民路径选择 根据个人情况(如职业…...

2024年十款超好用的图纸防泄密软件精选,十款优秀的图纸防泄密软件推荐
在当今竞争激烈的商业环境中,图纸作为企业的核心资产和智慧结晶,其安全性至关重要。一旦图纸泄露,可能会给企业带来巨大的经济损失和竞争劣势。因此,选择一款可靠的图纸防泄密软件成为了企业保护知识产权的关键。下面为大家推荐十…...

数据库锁机制
数据库锁机制 数据库锁主要分为三大类 1.全局锁 2.表级锁 3.行级锁 全局锁 定义:全局锁是对整个数据库实例加锁,禁止所有对数据库的写操作。 用途:主要用于备份和维护操作。 示例 MySQL FLUSH TABLES WITH READ LOCK;这条命令会锁定所…...

呼叫中心系统如何选型?
呼叫中心系统如何选型? 作者:开源呼叫中心系统 FreeIPCC 采购一套呼叫中心系统是企业提升客户服务质量、优化运营流程、增强市场竞争力的关键步骤。一个合适的呼叫中心系统不仅能提升客户满意度,还能提高内部团队的工作效率,降低…...

Ubuntu 22.04安装部署
一、部署环境 表 1‑1 环境服务版本号系统Ubuntu22.04 server lts运行环境1JDK1.8前端WEBNginx1.8数据库postgresqlpostgresql13postgis3.1pgrouting3.1消息队列rabbitmq3.X(3.0以上)运行环境2erlang23.3.3.1 二、安装系统 2.1安装 1.安装方式,选第一条。 2.选择…...

KINGBASE部署
环境:x86_64 系统:centos7.9 数据库–版本:KingbaseES_V008R006C008B0014_Lin64_install 授权文件–版本:V008R006-license-企业版-90天 一 前置要求 1.1. 硬件环境要求 KingbaseES支持通用X86_64、龙芯、飞腾、鲲鹏等国产C…...

探索 ONLYOFFICE:开源办公套件的魅力
文章目录 引言一、ONLYOFFICE 产品介绍与历史1.1 ONLUOFFICE 介绍1.2 ONLYOFFICE发展历史 二、ONLYOFFICE 的核心功能2.1 文档处理2.2 演示文稿 三、ONLYOFFICE 部署与安装四、ONLYOFFICE 产品优势和挑战五、ONLYOFFICE 案例分析六、ONLYOFFICE 的未来发展七、全文总结 引言 在…...

如何保护网站安全
1. 使用 Web 应用防火墙(WAF) 功能:WAF 可以实时检测和阻止 SQL 注入、跨站脚本(XSS)、文件包含等常见攻击。它通过分析 HTTP 流量来过滤恶意请求。 推荐:可以使用像 雷池社区版这样的 WAF,它提…...

抖音矩阵系统开发的技术框架解析,支持OEM
一、引言 随着短视频平台的兴起,抖音已成为全球范围内极具影响力的社交娱乐应用。对于企业和创作者而言,构建抖音矩阵系统可以实现多账号管理、内容分发与优化、数据分析等功能,从而提升品牌影响力和内容传播效果。本文将详细探讨抖音矩阵系统…...

python偏相关分析
偏相关分析含义 偏相关分析是一种用于测量两个变量之间关系的统计方法,它可以控制(排除)其他变量的影响。与简单的相关分析不同,偏相关分析可以帮助我们了解在控制某些干扰因素后,两个变量之间的“净”关系。比如&…...

低代码用户中心:简化开发,提升效率的新时代
随着数字化转型的加速,企业对于快速交付高质量应用的需求日益增长。在这个背景下,低代码开发平台应运而生,成为越来越多企业和开发者的首选工具。今天,我们将聚焦于低代码用户中心,探讨其如何帮助开发者简化流程、提升…...

ThingsBoard规则链节点:Math Function节点详解
引言 1. Math Function 节点简介 2. 节点配置 2.1 基本配置示例 3. 使用场景 3.1 数据预处理 3.2 阈值判断 3.3 复杂计算 3.4 动态阈值 4. 实际项目中的应用 4.1 项目背景 4.2 项目需求 4.3 实现步骤 5. 总结 引言 ThingsBoard 是一个开源的物联网平台,…...

echarts地图,柱状图,折线图实战
1.地图 <template><div style"height: 100%;" class"cantainerBox"><div class"top"><div class"leftTop"><span class"firstSpan">推广进度</span><div>省份选择:&l…...

客服宝快捷回复软件:客服工作的得力助手
在从事客服工作的这段漫长时间里,响应率和满意度一直是我最为头疼的绩效指标。这两个指标就如同两座大山,压得我时常喘不过气来。 然而,幸运的是,最近我安装了客服宝这个快捷回复软件,这一举措如同为我打开了一扇新的…...

laravel: Breeze 和 Blade, 登录 注册等
composer require laravel/breeze --dev php artisan breeze:install php artisan migrate npm install npm run build php artisan route:clear http://laravel-dev.cn/ http://laravel-dev.cn/register http://laravel-dev.cn/login...

RocketMQ 消息消费失败的处理机制
在分布式消息系统中,处理消费失败的消息是非常关键的一环。 RocketMQ 提供了一套完整的消息消费失败处理机制,下面我将简要介绍一下其处理逻辑。 截图代码版本:4.9.8 步骤1 当消息消费失败时,RocketMQ会发送一个code为36的请求到…...

三、Java并发 Java 线程池 ( Thread Pool )
一、前言 本文我们将讲解 Java 中的线程池 ( Thread Pool ),从 Java 标准库中的线程池的不同实现开始,到 Google 开发的 Guava 库的前世今生 注:本章节涉及到很多前几个章节中阐述的知识点。我们希望你是按照顺序阅读下来的,不然…...

zabbix安装配置与使用
zabbix Zabbix的工作原理如下: 监控部分: Zabbix Agent安装在各个需要监控的主机上,它以主配置的时间间隔(默认60s)收集主机各项指标数据,如CPU占用率、内存使用情况等。 通讯部分: Agent会把收集的数据通过安全通道(默认10051端口)发送到Zabbix Server。Server会存储这些数…...

第3关:命题逻辑推理
任务描述 相关知识 实验用例 实验原理和方法 编程要求 测试说明 任务描述 本关任务:用命题逻辑推理的方法解决逻辑推理问题。加深对命题逻辑推理方法的理解。 相关知识 为了完成本关任务,你需要掌握:1.命题符号化,2.命题推理。 …...