【postman的入门】
1.1 工具的应用:目前大部分系统都是部分遵循了REST的风格规范,也可简称为REST full系统。
REST full系统,主要是基于HTTP的CRUD?(增删查改)的操作,分别使用了HTTP协议的POST、GET、UPDATE、DELETE方法的请求。
1.2 工具的组成:
①顶部Headerbar工具栏。
②左边的sidebar请求侧边栏:主要分为History历史标签(默认)和Collections集合标签(便于管理)。
③右边的Request Builder请求构建和解析栏:主要用于管理API请求详情的,模拟HTTP请求的构建和查看服务器响应内容解析的。
1.3 流程:
我们输入url地址,选择Method(请求方法)和Headers(请求头)和消息体,点击发送。
Postman就发出请求给百度网站服务器,百度网站服务器随后接到请求就响应了这个请求,给我们返回响应信息。Postman接收到响应信息后,显示出消息的结构,展示给我们看。
1.4 拆解URL:
http://www.baidu.com/?action=list_course&pagenum=1&pagesize=20
?后面的内容,专业术语叫“query string“。
&分隔符,表示每一个单独的参数。
/请求行里面的url地址如果是“/”,表示根目录
1.5 注意事项:
①参数转义处理:如果参数中带有特殊字符,比如&、空格、百分号等,鼠标移动到参数值,右键选择“encodeURIcomponent”,替换成相应的转义字符。
②content-type(必填项,请求域):请求头里面的该字段,表示发送请求的消息体的类型,接口参数填写时需要根据type类型,选择在哪个模块(form-data、x-www-urlencoded、raw-jason或者raw-XML、binary)下填写参数。
③生成测试用例文档:选择左侧请求的folder目录,写好备注,点击右键,选中“publish docs”,生成文档。
1.6 接口用例。
测试方法:等价类、边界值、条件组合、错误猜测等方法。
模块名称:比如添加课程
Case编号:TestCase_001
测试步骤:
1.使用postman工具,调用创建课程API接口,新增一门课程,课程名称不存在。
2.使用postman工具,调用列出课程API,查看最新课程列表。
预期结果:
1.返回创建成功,code:0,massage:创建成功。
2.返回结果包含新赠的课程信息。
执行测试时:
1.调用查看课程清单API,查看老的课程列表。
2.调用创建课程API,新增一门课程。
3.再次调用查看课程清单API,查看新的课程列表。
Case课程:TestCase_002
测试步骤:同上。修改条件(课程名称已存在)
预期结果:
1.返回创建失败,消息体内容为{”recode“:2,”reason“:”同名课程已经存在“}
2.返回结果中,没有步骤1新增的课程信息。
1.7 测试环境和变量。
定义:{{变量名称}},变量就是一个字符串标识符,用来对于一个多次出现的值。
分为:全局变量和部分变量。
场景:
比如测试环境的服务器地址、端口号,内外测不一致,可以单独设置一个变量当前环境使用。
【接口工具使用】
2. postman抓包
流程:
①postman,点击右上角的卫星图标,让其高亮显示,记录端口号,选择history历史标签。
②postman,配置falter的过滤条件,比如填入/api,可以只抓取api接口请求,点击确定。(这里容易报警,请关闭防火墙或者360警告)
③火狐浏览器,安装浏览器插件foxyproxy,设置代理地址为postman的代理监听地址和端口。
6.postman自动化方法
①利用postman自带的js代码执行沙盒:Pre-request Script标签、Tests断言标签
请求:比如发送请求之前,设置发送消息的代码,产生随机数字、或者填入当前日期时间到参数中。
响应:接收到响应后,编写代码判断,某个字段是否存在、某个值是否正确、接收数据是否正确等。
比如:设置全局变量环境代码:postman.setEnvironmentvariable('timestampHeader',new Date());
解释:所有用到{{timestampheader}}变量的地方,都自动使用当前时间,函数为new date()。
执行顺序:执行Pre-request脚本→发送request请求→接收response响应信息→执行Test脚本。
优点:方便快捷,解决日常接口测试,可以使用此方法。
②利用postman生成其他编程语言代码:
请求和响应:使用requests库的python代码,直接发送相应的HTTP请求消息,并对消息加入python动态的数值,并且检验接收的响应消息。
优点:完全自动化,方法1明显不够定制化需求,需要开发一些其他功能配合使用,比如与测试用例管理系统的集成,和持续集成系统的融合,执行自动化时的环境初始化数据清除等。
比如:如果熟悉python语言的requests库的发送请求和解析响应的方法,不用postman,可以通过python直接写代码完成自动化测试,缺点就是时间周期较长。
***代码导出:
右上角的Code按钮,可以以各种代码形式导出已经构建成功的collection、folder和API请求。
注意的事情,导出后的代码,如果import requests库,需要在python环境安装对应的库才可以使用。
【进阶沙箱1】
//获取当前时间,并设置环境变量
eval(globals.format_time);
pm.globals.set("timeNow",timeNow);
console.log(timeNow)
【进阶沙箱2】
//获取当前时间,并设置环境变量
eval(globals.format_time);
pm.globals.set("timeNow",timeNow);
//获取当前时间到时分秒
var dateNow = pm.globals.get("timeNow");
//切割当前时间,获取年月日,不要时分秒(8位)
var date = dateNow.split(" ")[0].split("-")[0]+
dateNow.split(" ")[0].split("-")[1]+dateNow.split(" ")[0].split("-")[2];
//切割当前时间,获取时分秒,不要年月日(6位)
var time = dateNow.split(" ")[1].split(":")[0]+
dateNow.split(" ")[1].split(":")[1]+dateNow.split(" ")[1].split(":")[2];
//切割当前时间,获取年月日+固定时分秒
var datetime = dateNow.split(" ")[0]+" 23:59:59";
//设置环境变量开始时间和结束时间
pm.globals.set("date",date);pm.globals.set("time",time);pm.globals.set("datetime",datetime);
console.log(timeNow);console.log(date);console.log(time);console.log(datetime);
沙箱部分,详细用法参考地址:https://www.jb51.net/article/159886.htm