Postman常用测试结果验证及使用技巧

发表于:2018-3-07 09:58

字体: | 上一篇 | 下一篇 | 我要投稿

 作者:willcaty    来源:光荣之路

  Postman的test本质上是JavaScript代码,通过我们编写测试代码,每一个tests返回True,或是False。
  每一个tests实际上就是一个测试用例
  官方文档给出了很多验证方式,我们通过实例来进行学习
  接口返回结果为json
  
  1.检查response的body中是否包含字符串
  tests["测试点"]=responseBody.has("需要查找的字符串");
  例:
  tests["statuscode"]=responseBody.has("301");
  tests["status是否存在"]=responseBody.has("status");
  tests["lists是否存在"]=responseBody.has("lists");
  tests["lists值为11"]=responseBody.has("11");
  注:当json中value为integer时,需要查找的值可以不带双引号,
  tests["xxx"]xxx代表的是你测试点的名字,可以是中文
  tests["xxx"]xxx在一个脚本中如果出现多次,那么只执行第一个,所以尽量不要重复
  当value等于中文字符串时,这个方法貌似就不怎么好用了,但是我们有别的方法去验证,往下看,如果有读者知道怎么解决这个问题,也可以联系我,教教我
  2.检查ResponseBody是否等于字符串
  tests["测试点"]=responseBody==="ResponseBody返回的内容";
  这个可以用在接口返回内容为纯字符串时,直接检查整个返回结果的正确性,
  例子:
  接口返回:哈哈
  tests["返回为哈哈"]=responseBody==="哈哈";
  tests["返回为哈哈"]=responseBody==="哈";
  第二个会返回False,必须完全匹配
  3.检查相应时间
  tests["Responsetime小于200毫秒"]=responseTime>200;
  tests["Responsetime大于200毫秒"]=responseTime<200;
  4.检查状态码
  这个也好理解,就是http请求状态码
  tests["Statuscodeis200"]=responseCode.code===200;
  注:
  这里的状态码,跟上面我们用的json里边的"status"不是一回事
  5.Codenamecontainsastring
  tests["Statuscodenamehasstring"]=responseCode.name.has("Created");
  tests["502"]=responseCode.name.has("Server");
  tests["502"]=responseCode.name.has("UnreachableServer");
  这个我的理解是,检查HTTPcode对应的string,如下面给出的list
  如下对应表,如果使用fiddler模拟相应的返回,注意fiddler返回的大小写有问题,用下表的string
  1)消息(1字头)
  100Continue
  2)成功(2字头)
  200OK
  3)重定向(3字头)
  300MultipleChoices
  301MovedPermanently
  302Movetemporarily
  。。。。。
  500InternalServerError
  501NotImplemented
  502BadGateway
  503ServiceUnavailable
  600UnparseableResponseHeaders(省略了一些)
  6.设置环境变量/全局变量
  postman.setEnvironmentVariable("key","value");
  postman.setGlobalVariable("key","value");
  7.把XML的body转换成JSON对象:
  varjsonObject=xml2Json(responseBody);
  8.检查json的值
  varjsonData=JSON.parse(responseBody);tests["Yourtestname"]=jsonData.value===100;
  还拿上面的json数据做测试
  tests["状态码为301"]=jsonData["status"]=="301";
  tests["message"]=jsonData["message"]=="购买商品库存不足";
  tests["list"]=jsonData["lists"][0]=="11";
  9.检查有信息
  tests["Content-Typeispresent"]=postman.getResponseHeader("content-Type");//不区分大小写
  tests["Content-Typeispresent"]=responseHeaders.hasOwnProperty("Content-Type");//区分大小写
  10.POSTrequest状态码
  tests["SuccessfulPOSTrequest"]=responseCode.code===201||responseCode.code===202;
  201-Created服务器已经创建了文档,Location头给出了它的URL。
  202-Accepted已经接受请求,但处理尚未完成。
  官方文档中还给出了对于json的验证例子
  这种基于JSON格式定义JSON数据结构的规范,我们叫他JSONSchema
  官方例子
  varschema={"items":{"type":"boolean"}};vardata1=[true,false];vardata2=[true,123];console.log(tv4.error);tests["ValidData1"]=tv4.validate(data1,schema);tests["ValidData2"]=tv4.validate(data2,schema);
  data1和data2是测试数据,schema相当于验证json的规范
  示例中验证data1和data2中的value是否都是boolean类型
  先了解下书写json规范文档常用的关键字
  还拿第一个json做例子
{
"$schema":"http://json-schema.org/draft-04/schema#",
"id":"",
"properties":{
"lists":{
"id":"",
"items":{
"default":11,
"description":"检查list值",
"id":"",
"title":"",
"type":"integer"
},
"type":"array"
},
"message":{
"default":"购买商品库存不足",
"description":"message信息",
"id":"",
"title":"",
"type":"string"
},
"status":{
"default":301,
"description":"返回状态值",
"id":"",
"title":"",
"type":"integer"
}
},
"type":"object"
}
上文内容不用于商业目的,如涉及知识产权问题,请权利人联系博为峰小编(021-64471599-8017),我们将立即处理。
21/212>
《2023软件测试行业现状调查报告》独家发布~

精彩评论

  • yanxixi
    2018-3-27 11:47:35

    我使用json校验的时候,提示jsonData is not defined,这是为什么啊

  • yanxixi
    2018-3-27 11:13:34

    喜欢这篇文章

关注51Testing

联系我们

快捷面板 站点地图 联系我们 广告服务 关于我们 站长统计 发展历程

法律顾问:上海兰迪律师事务所 项棋律师
版权所有 上海博为峰软件技术股份有限公司 Copyright©51testing.com 2003-2024
投诉及意见反馈:webmaster@51testing.com; 业务联系:service@51testing.com 021-64471599-8017

沪ICP备05003035号

沪公网安备 31010102002173号