一、为什么选用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_requests3、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/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运行结果(命令行):运行结果(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 token4、将access token设置到Jenkins中的钉钉通知器插件中(在Jenkins插件中下载安装),最后保存即可5、Jenkins任务跑完以后,钉钉就会收到消息推送

End

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

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

postman自动打开_趁热打铁,一口气记录下整个postman自动化测试过程!相关推荐

  1. postman自动打开_编写自动执行postman的脚本

    1.需要安装newman,newman的安装需要借助Node.js; 所以先安装好Node.js,然后配置好Node.js的环境: 安装Node.js,参考资料: https://www.cnblog ...

  2. postman自动打开_postman第1讲-开篇:介绍与安装

    ​作为一名测试工程师,如果还没有掌握 postman 的使用,那和作为司机却不会开车一样,尴尬到极致.从本篇开始,将利用一段时间持续系统的为大家输出关于 postman 的使用教程.希望通过此教程,帮 ...

  3. postman自动打开_postman---postman自动发博客

    前面写了一篇如何通过Cookies值去登录博客园,今天我们来通过登录博客园之后,我们进行通过Postman自动写博客 自动写博客 1.打开Postman.填写博客园对应的Cookies: 2.抓取编写 ...

  4. 计算机主机光盘盒在哪,电脑光盘盒自动打开_电脑光盘怎么打开

    2017-01-05 16:26:27 不同情况下,有三种操作方法打开光驱仓门: 1.仓门右侧有个不显眼的黑色长方形的按键.轻按它即打开仓门,再次按它又会关上仓门: 2.在操作系统中,打开" ...

  5. python自动打开_如何用Python自动打开和关闭Tor浏览器

    我在玩网页抓取和Tor.在 我设法让它同时使用requests和{}+PhantomJS.但是,我需要打开Tor浏览器才能使脚本工作.在 这就是为什么我现在试图自动化整个过程:也就是说:自动打开Tor ...

  6. c++exe程序在别人电脑上双击无法打开_解决 Windows 10 下蓝牙 4.0 鼠标无法自动连接的问题

    前言 前几天买了雷柏 M500 这款鼠标,支持 Wifi 接收器.蓝牙 3.0 和 4.0.但在用蓝牙 4.0 连接的时候连接总是自动断开,每次睡眠.重启,或者待机较长时间连接都会断开.蓝牙3.0没有 ...

  7. lisp 线性标注自动避让_泰州支重轮双头车自动化生产线

    泰州支重轮双头车自动化生产线数控机床的通电:机床一般使用三根动力线,一根接地保护线,要注意电缆线的平方数,在机床说明书的线路图中都有明确标注.线轨硬轨?加工中心导轨到底应该怎么选?机床行业的人士都知道 ...

  8. python数据库自动对接_如何使用Python连接MySQL建立自动化监控报表

    废话不多说,直接贴代码: #定时发送邮件的任务 #-*- coding:utf-8 -*- import sys import string, os, sys import smtplib from ...

  9. 今天我不在家,但是大门自动打开了...

    硅谷Live / 实地探访 / 热点探秘 / 深度探讨 我们小时候,都被父母千叮万嘱过 "别给陌生人开门!不论谁敲门,都不要开..." 前两天,维修师傅要来小探家修东西.小探提前把 ...

最新文章

  1. 《预训练周刊》第12期:无注意力变换器、借蛋白质语言模型论进化速度
  2. Hive的基本操作-排序
  3. Python 生成器 迭代器
  4. 使用Python获取Linux系统的各种信息
  5. Ubuntu系统中创建虚拟环境
  6. windows快速全局检索文件工具-Listary
  7. 华为网络计算机登陆,华为路由器如何登录192.168.3.1入口设置界面
  8. 导致锁表的原因及解决方法
  9. 中e管家如何投资理财收益最大化
  10. win server 2016 无法安转.net framework 3.5 问题
  11. java串口rxtx下载_WINDOWS环境下JAVA串口RXTX编程DEMO
  12. 东南大学计算机学院保研比例,东南大学计算机科学与工程学院计算机技术(专业学位)保研...
  13. vue3 baseCss 初始化
  14. MySQL--基础知识点--51--dual
  15. 如何在Mac上刻录DVD以获取可播放的视频?
  16. InfoGAN:Interpretable Representation Learning by Information Maximizing Generative Adversarial Nets
  17. 利用VMware虚拟机将Ubuntu18.04装入U盘或移动硬盘,实现UbuntuToGo,随插随用,支持UEFI启动(附ROS安装的相关链接)
  18. isNaN()与Number.isNaN()的区别
  19. java定义接口必用关键字_Java中定义接口的关键字是什么
  20. Ninja 构建系统

热门文章

  1. PHP-Codeigniter:实习笔记1
  2. HDU 1225 覆盖的面积
  3. 基于tensorflow框架的神经网络结构处理mnist数据集
  4. 百度搜索资源平台添加自己的网站
  5. “ShardingCore”是如何针对分表下的分页进行优化的
  6. Go使用simple-json解析json数组字符串:以Harbor获取镜像tag为例
  7. Ansible Playbook企业案例:利用 playbook 安装 nginx、安装和卸载 httpd、安装mysql
  8. 【收藏】Geomesa(三)图层的裁剪分析
  9. vue-element-admin文档gitee地址
  10. Scala 中将方法、函数、函数式编程和面向对象编程关系分析图