赞
踩
Postman是一个接口测试和http请求的工具,它主要针对的是http请求。模拟浏览器发送请求,接收响应。使用Postman可以模拟任何浏览器发出的请求,可以构造地址,请求方法,请求内容,Cookies等。Postman的响应内容包括完整的响应头,响应时间,响应大小,cookie等内容
从官网下载Posman,安装完成后,开始使用,下方是Postman的基本界面
启动Postman后,点击file-new,选择Collection,输入集合名字
集合Collection中还可以创建不定层级的Folder
(1)输入请求,并单击Send按钮
(2)该请求由API服务器收,并返回响应
(3)响应由Postman接收,接口响应内容在工具中可视化
Postman中,预请求脚本(Pre-request Script)是一种在发送请求之前执行的脚本。它可以用于设置请求头、修改请求参数或执行其他操作。
测试(test)是一种在发送请求之前执行的脚本。
Postman界面有控制台console,可以帮助用户了解系统后台发生了什么
HTTP GET请求方法是从服务器检索数据。数据可以在URL地址中展示出来,GET请求将参数拼接在URL后面并传递给服务器(参数的Key与Value之间由“=”号,Value不需要引号包裹,多个参数之间用“&”符号连接)
1.1构建请求
param1 和param 2表示发送的参数
**?**后面接参数
**&**连接多个参数
参数编辑:
返回的是“:”而不是“=”
无接口文档时,用Fiddler抓包接口,自己写接口文档,再在Postman中测试
临时变量(Data Variable)普通变量:在某个代码段中使用。
集合变量(Local Variable)项目变量:只在某个集合下使用
环境变量(Environment Variable):在某个环境下使用
全局变量(Global Variable):整个postman中的请求都可以使用
1.设置一个临时变量,var 变量名=变量值
2.console.log(变量名)
,验证变量是否定义成功,结果如下:
1.在Postman界面,选中集合,Variables选项中定义集合变量c_var
,赋值
2.代码Set a collection variable
定义集合变量Collection Variables,ps:定义完成需要Get a collection variable
,声明一下,请求并验证
3.发送请求,集合变量获取成功
1.图形化界面定义变量
(1)点击右上角“眼睛”按钮,新建环境变量
(2)输入环境名,并设置环境变量名和环境变量值,Ctrl+S保存,可以再次点击眼睛按钮查看定义的环境变量
(3)选择一个请求Request,点击Tests,右方侧边栏点击Get a environment variable
,获取一个环境变量并赋值给e_var1,console.log打印,Ctrll+S保存。代码如下:
// 获取一个环境变量
e_var1=pm.environment.get("e_var");
// 打印,查看e_var的值
console.log(e_var1)
(4)点击Send,发送请求,环境变量值在Console中打印成功。
2.JS代码定义环境变量
(1)选择请求Request,侧边栏点击Set an environment variable
,设置环境变量名variable_key
为e_var2
,环境变量值variable_value
为fffffffff
(2)侧边栏点击Get a environment variable
,获取环境变量并赋值给e2,console.log(e2)
打印e2的值
(3)Ctrl+S保存,点击Send,发送请求,验证环境变量是否定义成功,代码如下:
// 定义环境变量e_var2,值为fffffffff
pm.environment.set("e_var2", "fffffffff");
// 获取环境变量
e2=pm.environment.get("e_var2");
// 查看环境变量
console.log(e2);
(4)全局面变量在Console控制台上打印成功,结果如下:
3.引用环境变量
4.删除环境变量
环境变量用JS代码删除,侧边栏中单击Clean an environment variable
,输入要删除的环境变量名即可。代码如下:
pm.environment.unset("variable_key");// variable_key 就是要删除的环境变量名
1.图形化界面设置全局变量
(1)点击右上角“眼睛”按钮,新建全局变量
(2)进入Globals界面,设置全局变量名和全局变量值,Ctrl+S保存
(4)再次点击眼睛按钮,查看定义的全局变量
(5)选择一个Request,进入Tests,侧边栏选择Get a global variable
,赋值给g1并打印,代码如下:
// 获取一个全局变量
g1=pm.globals.get("g_var");
// 打印,查看g_var的值
console.log(g1);
(6)Ctrl+S保存,点击Send发送请求,全局变量的值在console中打印成功
对预先测试结果进行校验
(1)断言设置的位置:选择一个Request,单击Tests
(2)侧边栏找到Response Body:Contains string
,单击
(3)设置,返回结果中如果包含to.include
后的字符串时,pm.test
后设置断言
(4)响应结果Responce —>Test Results ,查看断言结果,为PASS
还是FAIL
代码如下:
// 判断响应体中是否包含预期的结果
pm.test("断言内容", function () {
pm.expect(pm.response.text()).to.include("断言需要的条件");// 预期结果
});
代码如下:
// 判断状态码是否为与其状态码,对响应状态码进行断言设置
pm.test("状态码是200", function () {
pm.response.to.have.status(200);
});
代码如下:
// 判断响应时间是都为预期时间,对响应时间进行断言设置
pm.test("响应时间少于200ms", function () {
pm.expect(pm.response.responseTime).to.be.below(200);
});
1.设置参数的参数名和cvs数据中的参数名不一样
2.设置断言的参数,大小写没有匹配成功
以招聘系统为例,如果新增商务需求列表接口正确,请求体数据正确,但是Postman发送Send请求后,数据库中表数据不增加,因为cookie不正确,要先从登陆接口中拿到cookie,
依赖登录状态的接口,在请求时,要携带服务端返回的cookie,或token,服务器验证身份后,才能进行对应操作
设置断言,批量运行接口,得到的pass或者fail结果可以告诉我们接口的情况,根据断言设置
加密时前端加的密,后端之所以能解开,是因为前后端商量好了使用哪种算法,前后端都遵循了同一种算法,就可逆,所以后端可以解开,如果别人拦截了密文,不知道加密规则,也很难解开
比如登陆禅道,在页面中输入的密码123456,在程序中使用md5加密了,Pre-request Script作用于集合cllection下的每一个请求,在每一个请求request执行之前,执行Pre-request Script脚本 。
以禅道登录为例,验证加密接口的应用
1.根据API文档,获取接口地址和入参,其中的密码应该是不加密的。如果没有API接口,用Fiddler抓取接口信息。
加密接口,password前端加密后传送后端,不记得密文,只记得明文,诉求:先加密,再发送给接口——预请求脚本Pre-request Script可以完成
将环境变量传递给登录请求的参数,Send发送请求
因为手机号注册后,再次测试接口,就会提示已经注册,因此,生成随机数,
{{phone}}
在使用“Collection Runner“的时候,集合的请求执行顺序就是请求在Collection中显示的排列顺序:
但是,有时候我们不希望请求按照这样的方式去执行,可能是执行完第一个请求,再去执行第五个请求,然后再去执行第二个请求:那么在“Collection Runner”中该如何去构建不同的执行顺序呢?
在Postman中使用if else语句编写JS代码,可以改变集合顺序执行的速度,还以集合中baidu,jd,B站这三个接口为例,更改集合执行请求的顺序:
1.在集合中执行“jd”(京东)请求后,不再线性执行B站请求:在jd请求中的Tests中,输入以下代码
postman.setNextRequest(null);
2.选择集合,Run Collection,集合执行请求的顺序为:“baidu” —>“jd”,不再执行“B站请求”
JSON.parse内置方法,将字符串转为json格式,以字符串{"name":"tom"}
为例
var aaa='{"name":"tom"}';
// 直接取出字符串
console.log(aaa);
// JSON.parse内置方法,将字符串转为json格式,支持通过.获取value值
console.log((JSON.parse(aaa)).name);
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。