在上一篇:使用Postman工具作接口测试(二)——环境变量与请求参数格式文中讲了http请求一些基本配置与使用,实现了接口的调用,接口测试并没结束。当咱们调用一个接口后,须要对其实际结果与预期结果进行判断,若是一致,则成功,反之,则失败。还有实际项目中,单一接口不多,一般是有关联的业务接口测试,好比下单操做,会调用商品信息接口,而咱们在请求下单接口的时候,前提是获取商品信息接口是正常的,不然没法下单。html
下面我会以登陆为例,来说如何利用postman提取上一个接口返回数据,而且放到当前接口来使用。服务器
下面以登陆接口为例,讲一下postman如何使用参数提取,能够经过Fiddler工具对系统登陆操做进行抓包分析,本文是以公司登陆接口为例,出于保密考虑,有些地方不够敞开,敬请谅解。工具
抓包后,咱们获得一些参数,除登陆的帐户、密码,还有一些其余参数,最重要的是动态参数,什么是动态参数?就是每次登陆它都会变化,加密方式是固定的,可是动态参数必定是变化的,因此找到动态参数得获取方式,是最关键的。post
请看图:测试
这是一个登陆的接口,是302,它经过重定向,最终会跳到登陆url上面,返回200。这里显然execution参数是动态的,我是已经参数化,从上个接口获取的。先看不执行上一个接口,只执行这个登陆接口的效果:ui
图中能够看到,返回的是500,服务器错误,由于{{get_execution}}获取不到值。加密
ps:登陆接口是post方法!url
那么想获得值,必须先调上个接口获取execuion的值。首先经过Get方法获取到动态参数execution,如图:spa
拿到动态参数execution的值后,就能够执行登陆接口:code
图中已经登陆成功,返回状态码200。
下面介绍方法,在界面中找到Tests,个人第一篇文章已经介绍了这个功能是干什么用的,如不清楚,请从头看。而后,编写提取参数的JS代码:
//定义变量 var login_execution = pm.response.text(); //match()里面的先后两个反斜杠是必要的 var get_login_execution = login_execution.match(/name="execution" value="(.*?)"/)[1]; //设置环境变量get_execution pm.environment.set("get_execution", get_login_execution); //打印get_execution console.log(pm.environment.get("get_execution")); //打印get_login_execution console.log(get_login_execution);
在环境变量中,添加变量名称:get_execution,打开控制台console,运行接口,获取参数,如图:
由于我打印输出了两次,左图中因此显示两次,右图须要设置get_execution变量为环境变量,由于第二个接口须要使用,当前和初始值不须要填,运行脚本,获取到的值,自动填进去。
而后执行登陆接口后,就会带着这个参数请求。
下面来验证登陆是否成功,能够模拟请求登陆后的一些操做,如图:
这是一个登陆后,查询列表的页面。
刚才咱们是登陆成功了,可是咱们在实际接口测试过程当中,若是接口不少,咱们不可能经过肉眼每一个接口点开去看它的状态码和返回数据,这个时候断言就派送用场了,就拿上面那个登陆后查询列表的接口为例,咱们知道能够查到数据,如今换一种方式,经过断言来判断是否查询成功。
注意:断言是调用接口以后,才去执行的,因此代码一样是写在Tests里面。
pm.test("Status code is 200", function () { pm.response.to.have.status(200); }); pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("周易莹"); });
查看一下结果对比:
若是接口返回数据中包含:"周易莹" , 而且状态码是200,就表示成功了,反之,则登陆失败,由于这个接口不登陆是没法请求。
如今演示一下,没有登陆,去调这个接口看看:
以上就是Postman接口测试中断言和关联的实例,若是本文对你有一点帮助,请给小编一个赞以示鼓励,谢谢。后面讲初始化接口数据、测试用例集、测试报告。