热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

postmancookie设置_趁热打铁,一口气记录下整个postman自动化测试过程!

一、为什么选用postmanpostman调试工具无论对于开发和测试小白,还是技术大牛来说应该都耳熟能详,在过去的几年里大家对这款工具应用最广的用途是把

一、为什么选用postman

postman调试工具无论对于开发和测试小白,还是技术大牛来说应该都耳熟能详,在过去的几年里大家对这款工具应用最广的用途是把当作接口调试的测试工具,它能发送几乎所有类型的HTTP请求,操作界面非常简洁美观(大家来欣赏下图),支持抓包,保存历史记录,有用户组管理机制,方便多端同步用例等等。最主要的是各位小伙伴已经对它用于接口调试的功能非常熟悉,已经为我们接下来使用它做持续集成的接口自动化打下了良好的基础。 d8eb9a2eb4868411a763037896e93b76.png

二、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,方便查看。110c63a9ef04730174d66c9b56f30d66.png②打开浏览器的代理设置,设置相同端口打开浏览器,找到代理服务器,将地址修改为本地机器的ip地址,端口设置为第①步设置的端口号,点击确定即可。我们演示的这个设置方法是以PC端为例子,有些同学需要抓APP端的包。设置方法原理也大概相同,大家可以参看官网文档中的设置方法即可。移动端设置方法:https://learning.getpostman.com/docs/postman/sending_api_requests/capturing_http_requestse7aaa05127121a956b501e3b572b60c7.png3、postman调试控制台打开左下角打开【postman console】控制台,当我们某个测试用例跑不通的时候需要调试,可以打开这个postman的控制台方便查看接口调试的打印信息,当然我们后续用js写的脚本可以在控制台中看到输出信息。f8ecdfed2bd217bf7566b4b446144723.png4、postman 发送请求发送请求是postman最核心的功能,如下图选择好请求方式及接口地址、相应参数,点击发送即可。有两个地方强调下:①需要发送上传文件的请求,在body中选择选择form-data ,选择File选项后即可选择文件②可以将请求头统一管理,打开任意一个请求tab,点击Headers->Presets->Manage Presets可以设置好请求头信息,下一个请求再需要相同的请求头便可以从这里读取。e0a37891d32c7ff7ffcc7d884f375701.pnga23a871811281aa4396b5df77d1411dd.png

三、postman 变量与集合

1、什么是变量首先我们来思考一个问题,为什么要使用变量,如果某个参数值只需要在某个独立接口的使用一次,那么我们可以不使用变量,但是如果变量需要在多个位置重复使用,或者发生接口传递(即前一个接口的返回值用于下一个接口的请求参数),那么借助变量,postman就可以实现业务逻辑与测试数据分离,帮助我们建立健壮的测试用例。2、变量的作用域全局变量(Global):主要用于需要在多个位置重复使用的几乎不改变的数据环境变量(environment):主要用于接口传递的参数局部变量(local):集合/文件/接口中 某个js脚本中的变量数据变量(data):主要用于并发测试(json/csv文件)同变量名的情况下,优先级范围:局部变量>数据变量>环境变量>全局变量3、如何设置变量设置变量的方法有两种:① 在postman的ui上进行定义:如下图所示76acbc7065b7a8d45176947aa1d516a9.pngd3a5103af37483a829e83ab099f9b626.png② 使用脚本定义,在Test选项卡中填入脚本:pm.environment.set("new_name", "zhougang");5ce5ea8d0b90b88fd37af6d17a42af28.png4、如何使用变量使用变量也是有两种写法,用在不同的场景中① 在Builder中使用:{{varname}},一般用于请求头、请求体、请求地址中80aa63ee7ddad97cf4b7e58206e23b1e.png② 在js 脚本中使用:pm.environment.get("variable_key"),一般用于Test或pre-request Script选项卡中0309a696c61d3edc3690de8d3cf94f56.png5、集合我们为什么要使用集合以及使用集合的好处在哪?①可以组织业务逻辑:分类和存储接口②方便一键运行:在runner中选择要运行的集合或者里面的文件夹进行运行③方便导入导出:导出和导入json文件,如使用newman在命令行执行;注意点:集合和变量的导出是分开的。④方便分享:分享至自己团队的共享目录下基于以上几点,我们想要写出好维护且高效的接口测试用例,一定要好好利用集合。ee711f8bd61812de80052d9e2cc3525c.png

四、postman脚本应用–接口断言

前三节内容我们了解到了做自动化测试前必须掌握的基础知识,这一节我们进入到接口自动化测试中的核心内容:如何判断一个接口的返回值与期望值相符,也就是我们说的接口断言成功。这个时候postman的测试沙箱sandbox就发挥了巨大的作用。官方解释:Postman sandbox沙箱是一个Javascript执行环境,在编写pre-request scripts 和 test scripts编写的脚本在此沙箱中执行(Postman和Newman中都可以使用)①在请求发送前,在“pre-request script”选项卡下输入脚本,主要用于设置测试需要的测试参数②在请求发送后,在“test”选项卡下输入脚本,主要用于做断言。7c6bcef7a1cf3ae58b000aa8044afc26.png③因此如果我们需要断言一个接口返回是否是预期值,可以参考如下例子: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/157dd805e1d21ce54a39df369be5c440.png重点强调:你可以将请求和测试脚本添加到一个集合,一个文件夹,一个请求中,优先级是:请求>文件夹>集合。举个例子,判断返回时间的断言就可以放在集合或者文件中,因为多个接口可以共用这一个断言。

五、postman接口自动化

前面我们已经做好了各种准备工作,包括抓包、编写接口、存入集合、设置变量、断言等,接下来就可以把我们的接口自动的跑起来。1、使用postman自带的 runner工具①按照下图进入runner页面,在runner中选择要运行的collection或者里面的文件夹进行运行②enviroment:选择用例跑的环境变量集合③iterations:接口迭代次数(接口自动化 默认使用1就行,1以上一般拿来做并发测试)④delay:每个接口发起请求的的间隔时间(建议100ms)⑤data:数据文件,可以是json格式的,也可以是csv格式的(一般用于并发测试)⑤keep variable values: 重点!!!必须要勾上,环境变量将会更新⑥start run:运行结果集,并查看结果页,可导出79ae9550db1736ed87b550bde2b42e1f.png运行结果如下显示,示例中34条成功,0条失败。如果有失败的用例可以用控制台查看是请求没发送成功还是断言失败,单独调试。582937bebefd865942740fd60298dda4.png2、使用postman的插件:Newman到了这一步,其实我们已经讲完用postman做接口自动化的一个完整过程了。但是再来思考一个问题,如果我要将这个接口自动化测试加入持续集成的环节,并且再给领导发一份这个测试结果的报告呢?这时候 Postman的持续集成方案,便是使用自带的插件Newman + 持续集成工具如Jenkins的结合使用1)官方说明文档:https://www.npmjs.com/package/newman(https://www.npmjs.com/package/newman2)使用Newman运行用例并生成测试报告①首先需要安装node.js环境(同时安装了npm)下载地址:http://nodejs.cn/download/②使用命令行安装 Newmannpm 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运行结果(命令行):1152b20f3e4a6e62dc3411cb92dd7444.png运行结果(html格式):6a31514c79cbd250a3e74c9206298382.png3)使用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,配置相关内容3e334610043ee883f296b05f8b9532e1.png构建环境配置7e3cc8e9323a7e05271746a14054ecf6.png构建脚本62898885074b871ac769e6fb2dd715ea.png选择构建,查看控制台输出信息4175c428b98d3fd14f7536cea1ed3965.png

六、与钉钉机器人结合

钉钉是我们常用于工作沟通的工具,配合钉钉强大的机器人功能,可以让我们在持续集成的测试环节中实时、快速接收到测试结果的消息推送。1、建一个自动化测试群,点击群设置-》群机器人bb4cde91d0f3cf7ee1782e632f784def.png2、选择自定义机器人7ae813edf40fea9443dc8a5dc8be538d.png3、添加机器人,获取到access token8988a1a20b660074db24681b3e2b7328.png4、将access token设置到Jenkins中的钉钉通知器插件中(在Jenkins插件中下载安装),最后保存即可32be98feea7fe5d0d70fcea388a21b36.png5、Jenkins任务跑完以后,钉钉就会收到消息推送f5b9835c4efb792dc98f7a143b7606ff.png

End

以防走丢,请及时星标 置顶 关注我

 9c90155083691544d6cbee809fa8cc93.png

你这么可爱,点个三连再走呗~



推荐阅读
  • 在对WordPress Duplicator插件0.4.4版本的安全评估中,发现其存在跨站脚本(XSS)攻击漏洞。此漏洞可能被利用进行恶意操作,建议用户及时更新至最新版本以确保系统安全。测试方法仅限于安全研究和教学目的,使用时需自行承担风险。漏洞编号:HTB23162。 ... [详细]
  • 在PHP中如何正确调用JavaScript变量及定义PHP变量的方法详解 ... [详细]
  • 技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统
    技术分享:使用 Flask、AngularJS 和 Jinja2 构建高效前后端交互系统 ... [详细]
  • DVWA学习笔记系列:深入理解CSRF攻击机制
    DVWA学习笔记系列:深入理解CSRF攻击机制 ... [详细]
  • 基于Net Core 3.0与Web API的前后端分离开发:Vue.js在前端的应用
    本文介绍了如何使用Net Core 3.0和Web API进行前后端分离开发,并重点探讨了Vue.js在前端的应用。后端采用MySQL数据库和EF Core框架进行数据操作,开发环境为Windows 10和Visual Studio 2019,MySQL服务器版本为8.0.16。文章详细描述了API项目的创建过程、启动步骤以及必要的插件安装,为开发者提供了一套完整的开发指南。 ... [详细]
  • Maven Web项目创建时JSP文件常见错误及解决方案
    Maven Web项目创建时JSP文件常见错误及解决方案 ... [详细]
  • 本文介绍了如何利用Struts1框架构建一个简易的四则运算计算器。通过采用DispatchAction来处理不同类型的计算请求,并使用动态Form来优化开发流程,确保代码的简洁性和可维护性。同时,系统提供了用户友好的错误提示,以增强用户体验。 ... [详细]
  • 优化后的标题:深入探讨网关安全:将微服务升级为OAuth2资源服务器的最佳实践
    本文深入探讨了如何将微服务升级为OAuth2资源服务器,以订单服务为例,详细介绍了在POM文件中添加 `spring-cloud-starter-oauth2` 依赖,并配置Spring Security以实现对微服务的保护。通过这一过程,不仅增强了系统的安全性,还提高了资源访问的可控性和灵活性。文章还讨论了最佳实践,包括如何配置OAuth2客户端和资源服务器,以及如何处理常见的安全问题和错误。 ... [详细]
  • 在 Axublog 1.1.0 版本的 `c_login.php` 文件中发现了一个严重的 SQL 注入漏洞。该漏洞允许攻击者通过操纵登录请求中的参数,注入恶意 SQL 代码,从而可能获取敏感信息或对数据库进行未授权操作。建议用户尽快更新到最新版本并采取相应的安全措施以防止潜在的风险。 ... [详细]
  • Web开发框架概览:Java与JavaScript技术及框架综述
    Web开发涉及服务器端和客户端的协同工作。在服务器端,Java是一种优秀的编程语言,适用于构建各种功能模块,如通过Servlet实现特定服务。客户端则主要依赖HTML进行内容展示,同时借助JavaScript增强交互性和动态效果。此外,现代Web开发还广泛使用各种框架和库,如Spring Boot、React和Vue.js,以提高开发效率和应用性能。 ... [详细]
  • 深入探索HTTP协议的学习与实践
    在初次访问某个网站时,由于本地没有缓存,服务器会返回一个200状态码的响应,并在响应头中设置Etag和Last-Modified等缓存控制字段。这些字段用于后续请求时验证资源是否已更新,从而提高页面加载速度和减少带宽消耗。本文将深入探讨HTTP缓存机制及其在实际应用中的优化策略,帮助读者更好地理解和运用HTTP协议。 ... [详细]
  • 利用爬虫技术抓取数据,结合Fiddler与Postman在Chrome中的应用优化提交流程
    本文探讨了如何利用爬虫技术抓取目标网站的数据,并结合Fiddler和Postman工具在Chrome浏览器中的应用,优化数据提交流程。通过详细的抓包分析和模拟提交,有效提升了数据抓取的效率和准确性。此外,文章还介绍了如何使用这些工具进行调试和优化,为开发者提供了实用的操作指南。 ... [详细]
  • 在iOS开发中,基于HTTPS协议的安全网络请求实现至关重要。HTTPS(全称:HyperText Transfer Protocol over Secure Socket Layer)是一种旨在提供安全通信的HTTP扩展,通过SSL/TLS加密技术确保数据传输的安全性和隐私性。本文将详细介绍如何在iOS应用中实现安全的HTTPS网络请求,包括证书验证、SSL握手过程以及常见安全问题的解决方法。 ... [详细]
  • 在深入研究 UniApp 封装请求时,发现其请求 API 方法中使用了 `then` 和 `catch` 函数。通过详细分析,了解到这些函数是 Promise 对象的核心组成部分。Promise 是一种用于处理异步操作的结果的标准化方式,它提供了一种更清晰、更可控的方法来管理复杂的异步流程。本文将详细介绍 Promise 的基本概念、结构和常见应用场景,帮助开发者更好地理解和使用这一强大的工具。 ... [详细]
  • 微信平台通过盛派SDK(sdk.weixin.senparc.com)允许服务号和订阅号使用appId和token读取关注用户的个人信息。然而,这一过程需严格遵守隐私保护和数据安全的相关规定,确保用户数据的安全性和隐私性。 ... [详细]
author-avatar
奈何为人非_800
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有