Postman接口测试自动化介绍
前言:平时可能大家只是简单用postman来看一些请求返回的数据。其实它还具有很强大的接口自动化测试功能,它自己就提供了一个框架,采用js脚本编写的。其功能百度都可以查到使用方法,但感觉有点零散,我这里整理了一下,把使用postman进行接口测试的方法整合了,图文并茂,能快速掌握其使用。
1、postman简要说明
Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件,其提供了客户端和插件方式供大家使用。它除了方便开发调试外,对测试人员也有很大的作用,是接口自动化测试的好帮手,每个迭代版本发布时都可以通过postman执行一遍自动化接口用例,快速确保接口正确性,提高测试效率。下面进入正题,直接介绍使用它来进行接口自动化测试。
2、postman实现接口自动化测试
首先下载postman客户端安装包,然后按照提示安装,不细说。安装完后打开界面如下:
通过左边菜单栏创建接口测试用例,主要代码编写区域为pre-requestScript和Tests,如图:
Postman提供了全局变量和局部变量的设置,提高了编写测试脚本的方便性,postman主要采用js脚本编写。直接上常用的公共全局变量:
assertNotTimeout
var hasResponse=postman.getResponseHeader('Content-Type')?true:false; if(!hasResponse) tests['服务端在超时前没返回任何数据,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false;
logParams
if(hasResponse) tests[`[INFO] 请求参数(超时没返回时不解析):${JSON.stringify(request.data)}`]=true;
getResponseJson
try{if(hasResponse) var json=JSON.parse(responseBody);}catch(err){ tests['服务端没返回合法的JSON格式,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false; tests[`[INFO] 返回:${responseBody}`]=true; console.error(err);};
assertType
var assertType=(name,value,type)=>{let isType=(type==='array')? Array.isArray(value):typeof value===type; tests[`${name}为${type}(实际值:${value})`]=isType;};
assertEqual
var assertEqual=(name,actual,expected)=>{tests[`${name}等于${expected}(实际值:${actual})`]=actual===expected;};
assertNotEqual
var assertNotEqual=(name,actual,expected)=>{tests[`${name}不等于${expected}(实际值:${actual})`]=actual!==expected;};
设置方法如下:
设置完后保存即可,然后在编写测试脚本直接使用即可,下面是脚本编写样例:
var data="刘德华和天天向上的故宫还在";
pm.environment.set("data",data);
上面是设置发送请求前的data数据,参数以{{data}}方式表示,如图:
请求数据准备完成后,开始编写测试脚本,测试脚本根据自己需要编写,以下仅供参考。全局变量使用方法如下:
eval(globals.assertNotTimeout);//判断是否超时
eval(globals.getResponseJson);// 未超时,解析返回的JSON对象
eval(globals.assertNotEqual);// 返回元素是否与预期值不一致
assertNotEqual('code',json.code,403);//判断返回的code不是403
一般情况下前面三个请求需要一起写,后面代码就是引用的全局变量后的json取值方式,具体如图:
脚本编写完毕后,通过以下方式执行接口自动化:
点击run后会出现新的窗口:
设置完如上参数后,直接点击Run AutoTest按钮即可,执行结果如下:
以上操作即完成了一次接口的测试,如需要进行某个接口的压力测试,可以单独设置迭代次数。
3、postman使用外部数据进行接口自动化
如果需要使用外部数据文件进行测试,方法如下:
先准备好外部数据,一般使用csv文件,可以直接用txt文件编写,然后保存成.csv格式文件,格式如下(第一行一定要写参数化的名称,带中文的值需要保存为utf-8格式,否则后面预览时会出现乱码):
然后定义需要参数化的位置和名称:
在测试执行前使用如下方式指定该参数化需要匹配的值:
pm.environment.set("name", data.name);//这里指定了参数化位置对应的值
console.log(data.name);//这里是日志打印
然后再编写测试用例,如:
eval(globals.assertNotTimeout);
eval(globals.getResponseJson);
eval(globals.assertEqual);
assertEqual('code',json.code,200);
编写完成脚本后,同样通过collection runner执行:
执行前可以打开log工具检查下执行时内容是否正确,按ctrl+alt+c调出日志工具,最后直接执行,效果如下。
4、postman生成request代码
postman除了进行接口测试外还能生成支持多种语言的request代码,方便使用,步骤如下:
以上为postman比较实用的功能,百度上都有,这里整合了一下供大家使用,方便大家快速学习。
Postman接口测试自动化介绍相关推荐
- postman 接口测试工具介绍
postman 接口测试工具介绍 https://www.cnblogs.com/fly_dragon/p/9186745.html
- postman接口自动化图文案例介绍
我知道的接口测试工具是postman.soapUI.jmeter,选择的是postman,原因就是轻量,而且简单直白. postman是搭配JavaScript来做的接口自动化,将笔记记录在此~ 推荐 ...
- 接口测试自动化的思考与总结
目录 前言 服务端接口测试介绍 什么是服务端? 什么是接口? 什么是接口测试? 为什么要做接口测试? 如何做接口测试? 接口测试自动化介绍 什么是接口测试自动化? 为什么要做接口测试自动化? 接口测试 ...
- 关于接口测试自动化的总结与思考
序 近期看到阿里云性能测试 PTS 接口测试开启免费公测,本着以和大家交流如何实现高效的接口测试为出发点,本文包含了我在接口测试领域的一些方法和心得,希望大家一起讨论和分享,内容包括但不仅限于: 服务 ...
- 关于关于接口测试自动化的总结与思考接口测试自动化的总结与思考
[文章末尾给大家留下了大量的福利] 简介: 对于接口自动化测试,从用例设计到测试脚本实现,总结起来,需要我们具备如下思想:模块化思想.数据驱动思想.关键字驱动思想 作者:予慕 序 近期看到阿里云性 ...
- Postman接口测试工具实战演练集
文章目录 一.前言 二.Postman工具介绍 三.Postman工具下载安装 四.Postman工具使用 五.Postman工具之接口测试 5.1 接口测试的必要条件 5.2 常见请求与传参 5.3 ...
- 接口测试自动化框架汇总
背景 前两篇文章我们介绍了如何使用Postman和cURL手工执行接口测试用例,不过如果项目需要长期开发和维护的话,我们就需要开始考虑自动化测试了.自动化测试第一步就是框架选型.所以本篇将介绍目前主流 ...
- 测试工具 - Postman接口测试入门使用手册,Postman如何进行数据关联、自动更新cookies、简单编程
Postman 接口测试 前言 一.工具安装 ① 获取工具 ② 账号登录 ③ 抓包工具获取 二.接口测试 ① 创建一个目录 ② 编写脚本 ③ 抓取请求 ④ 填写用例头部 ⑤ 填写用例主体内容 ⑥ 测试 ...
- Postman接口测试工具学习笔记(一)接口测试概念及Postman入门
(下文照搬@Storm啊老师博文,留下记录为了方便学习和理解.大家可以去看看原文地址:https://blog.csdn.net/duzilonglove/article/details/786454 ...
最新文章
- iOS 异形tabBar, 中间item凸起
- RAID之中的RAID5的创建及示例
- android view控件的显示和隐藏动画效果
- 皮一皮:年轻人就是胆子大...
- EOSIO.DCT 1.3以上版本工具编写EOS智能合约重大更新
- 记录一些比较有趣的网站,来给自己的网站设计积累思想
- RestTemplate 发送 Https 请求调用
- MarkDown基础语法记录
- c55x 汇编语言指令,[转载]关于TMS320C55x的汇编语言中的.sym伪指令
- Web前端新手一定要知道的几个框架!
- SAP培训——SAP License基础
- 爱奇艺NLP:BiLSTM_CRF的关键词自动抽取
- virtual box和vmware有什么区别吗_真发假发套与普通假发有什么区别吗?
- python画简单图-使用Python中的Turtle库绘制简单的图形
- 2020年中国科技核心期刊目录(自然科学卷)
- java项目:基于ssm的高校后勤管理系统(spring+spring mvc+mybatis+easyui+jquery)1004
- coreldraw x5 选择工具快捷键_coreldraw x5快捷键大全 coreldraw快捷键分享
- bandizip修改压缩文件内容_BandiZip如何进行解压缩文件?BandiZip解压缩流程
- html网页内部超链接介绍
- 微信小程序:缓存wx.getStorage