一、准备
1、postman工具
2、搭建被测系统服务
3、fiddler抓包工具
说明:本此实战测试是在完成前台界面开发后进行的,接口是通过fiddler抓包获取的。(如果没有完成系统前台开发,以项目组输入的接口为准进行测试也是一样的原理)
二、完成后
先看一下完成后的情况:
①设置环境变量,可区分是线上环境、测试环境、开发环境等不同的环境(可将变化的变量存放在此,如:ip、port、用户信息、token等)。
②新建要测试的接口:请求方式支持get、post、put、delete等
③保存新建的接口,便于下次继续使用,如:切换环境后接口确认及版本升级后回归测试。
三、具体操作-以登录接口为例
1、设置环境变量
2、新建接口请求
④为当前接口使用到的环境变量
⑤为接口地址,其中{{baseurl}}和{{port}}为④环境变量中设置的key值
①为消息头设置:如果不清楚具体有哪些内容,可以直接把用fiddler抓包到的所有的消息头都拷贝过来(我是拷贝过来后在调试脚本过程中把没有用到的信息又全部都删除了,所以只有1个,而不是下图刚拷贝过来的8个)
②为body:body中value也为④环境变量中设置的key值
③为tests,完成tests编写后操作send发送请求;查看tests结果
tests内容的目的是判断响应的结果是否准确,具体内容可以按照下面的代码块这样编写
//判断响应结果是否是200 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("登录成功"); }); pm.test("Body matches string", function () { pm.expect(pm.response.text()).to.include("xxxx"); });
上图为登录接口返回的body内容,在编写tests是会用到这个。
4、保存接口:便于下次继续使用
四、其它使用场景
1、token/cookie传递
涉及到登录后才能进行的操作就需要在请求头中添加上cookie信息,下面以get接口为例实操如何进行传递。
第一步:将返回的内容转化为json格式,并且取到token内容添加到环境变量中。具体做法为,在login的tests中加入下面的代码。(环境变量中的token值就会实时更新,也保证了cookie的时效性)
//将返回的内容转化为json格式,并且取到token内容添加到环境变量中 var data = JSON.parse(responseBody); postman.setEnvironmentVariable("token", data.token);
第二步:在要使用到cookie的接口的header中加入Cookie:user-jwt-token={{token}}
使用fiddle抓包到的消息头为:
2、多接口批量执行
查看上图最右侧的运行结果,可获得具体失败的接口及是接口中哪个判断或断言失败的信息。
3、复杂场景跳转
如:在执行完登录接口后直接跳转到customers接口,在login接口的tests里面就可以加入下面的代码:
//跳转到products接口(使用场景:按照条件跳过不必要的接口) //setNextRequest() 函数不管在 Tests 脚本中何处被调用,它都只在当前脚本最后才被真正执行 //指定的跳转接口必须属于同一个集合中 //postman.setNextRequest() 只在运行集合测试的时候生效,也就是说我们单独运行 (Send) 接口Request1 时,函数是不起作用的 postman.setNextRequest("customers") //postman.setNextRequest("login bf")
4、区分环境进行运行
前置条件:存在多套环境
单个接口运行环境选择见上图,批量运行时运行环境选择见下图:
5、console调试
打开方式:Alt+Ctrl+C
打开后页面如下图所示:
在接口请求的Pre-request Script 中填写
//默认只能发送get请求 pm.sendRequest("https://postman-echo.com/get", function (err, response) { console.log(response.json()); });
填写后点击“send”运行,查看运行当前接口在console中展示
作者:信号a
原文链接:https://blog.csdn.net/weixin_46662419/article/details/107220035#comments_13344354