postman常用test语句
- var data = JSON.parse(responseBody);---这个我没用过,先做个记录
JSON.parse()方法,把json字符串转化为对象。parse()会进行json格式的检查是一个安全的函数。 如:检查json中某个数组元素的个数(这里检测programs的长度)
var data = JSON.parse(responseBody);tests["program's lenght"] = data.programs.length === 5; - 1.设置环境变量 postman.setEnvironmentVariable("key", "value");// postman.setEnvironmentVariable("orgName",jsonData.content.userInfo.orgName); 指定到某一个路径节点的key
- 2.设置全局变量 postman.setGlobalVariable("key", "value");
- 3.检查response body中是否包含某个string
- tests["Body matches string"] =responseBody.has("string_you_want_to_search");
- 4.检测JSON中的某个值是否等于预期的值,返回码
- tests["returnNO=0000"] = jsonData.returnNo ==='0000';
- 5.转换XML body为JSON对象 var jsonObject = xml2Json(responseBody);
- 6.测试response Headers中的某个元素是否存在(如:Content-Type)
tests["Content-Type is present"] = postman.getResponseHeader("Content-Type"); //getResponseHeader()方法会返回header的值; - 7.设置header里的数据为变量
- var jsonData = JSON.parse(responseBody);
- var data = postman.getResponseHeader("Authorization");pm.environment.set("Authorization",data);
- 8.服务器状态码校验
- tests["Status code is 200"] = responseCode.code === 200;
- 9.设置超时时间,超过这个时间接口会报错
- tests["Response time is less than 1500ms"] = responseTime < 1500;
- 10.和上个接口比对结果--校验当前接口的返回是否和上个接口里取到的参数一致
- //tests["比对结果"] = jsonData.content[1].schoolName === pm.environment.get("schoolName");//只要返回的节点下有这个变量值--推荐一个比较好用的查看json格式的网站:http://www.bejson.com/jsonviewernew/ 可以轻松查看层级和节点,效果是这样的:
tests["比对结果"] = responseBody.has (pm.environment.get("schoolName")); //只要返回body里有这个变量值 - 11.校验接口返回是否有数据--我的程序设置的是如果当前没有数据,则只返回content[]
- tests["获取第一个学生信息结果"] = jsonData.content.items[0];//所以这句断言可以校验,如果content里还有数据,则视为返回不为空
- 12.两种返回校验,只要返回其中任何一个视为通过,否则报错
- tests["returnNO=0000|9999"] = jsonData.returnNo ==='0000' || jsonData.returnNo ==='9999'; 返回码
- tests["returninfo=oh yeah,通过了|票券无法使用"] = responseBody.has("oh yeah,通过了")||responseBody.has("票券无法使用"); string
- 13.//暂时常用的就这些,还有一个思路要记下,购买流程时记得把下单时产生的订单号设置为环境变量,存储起来,这样结算接口的时候使用这个变量来保证每次都是产生的新订单,结算可以成功!否则只能结算一次,下次再结算可能会提示支付失败,因为已经支付成功过了
- 14.pm.globals.set("type",parseInt(4*Math.random())+1);//针对不同类型的课程类型
设置一个1到4的随机整数,字段名是type,parselnt 是强制转换为整数 - 15.postman 遇到unicode的返回时如何校验?如果后台代码是php的很可能会有这个问题,html或xml是unicode的格式的,转换成json又是中文的,为难的地方是使用var jsonObject = xml2Json(responseBody);这句话并没有用,没有校验到相应的中文返回;然后想了两个迂回的方法://postman.setEnvironmentVariable("message",jsonData.message); 先把unicode的返回字段设置为变量,这个变量值保存时会为中文(至少我这边是这样子的)
//tests["任务状态"] = jsonData.message === pm.environment.get("message"); 然后拿这个message的值的你变量时保存的值对比,一致则为pass,但是这样有一个问题,因为变量的获取和对比都是一个返回里,肯定是每次都pass的,所以要结合code返回一起查看 - 第二种:tests["任务状态"] = jsonData.message === '任务状态或者报名状态已变更' ---这个比较直观了,不需要设置环境变量,直接在正确的返回写死了,然后拿返回字段的key值去校验,但这个也有个地方需要优化,就是当你的返回码不同但是并不属于报错时,接口返回的key肯定也不一样,所以灵活点的方法就是加个if,如果返回300则对比下面这段话,如果返回其它的而对比其它相应的返回
转载于:https://my.oschina.net/EvanDev/blog/2980173