postman断言方法

测试脚本右侧也有一些设置的选项,相信大家都能看懂什么意思,也能根据选项的意思大体晓得应该怎样设置测试断言,下面列出一些常用的测试断言: 

  1、验证本次请求的状态码,即验证本次请求是否能调通;
  tests["Status code is 200"] = responseCode.code === 200;
  tests["Status code is 201"] = responseCode.code === 201;
  其中的tests["Status code is 201"] 只是起到断言开始的作用,并且断言的描述为"Status code is 200",或可任意写合适的描述,运行测试或跑自动化脚本时,在测试报告中会表示出"Status code is 200"该断言是否判定成功;如:
   技术分享

 

 
  2、验证返回相应中的字段值:
  var jsonData = JSON.parse(responseBody);
  tests["Check respose value err_code"] = jsonData.err_code === 0;
  先声明一个变量jsonData,调用JSON.parse()方法将responseBody转换成json的标准格式并赋值给变量jsonData,然后判断jsonData中的err_code是否为0;
  javascript中===表示全等;真实的响应结果如下:
   技术分享

 

 
  3、把环境变量里的token设为JSON里的token
  postman.setEnvironmentVariable("username", jsonData.username);
  这一句是将相应中的"username"字段设置为环境变量,在同环境其他的接口中,可以调用这个变量;另外一点,变量值取得是jsonData.username,前提是在这个断言之前已经执行var jsonData = JSON.parse(responseBody);即变量jsonData是已经声明并赋值了得,否则应该换成responseBody.username,但responseBody可能不是json格式的,直接用可能不准确,所以最好还是先将responseBody转换成标准json格式,当然变量jsonData名可以任意,直接取为body也没有问题,那设置环境变量的值为body.username,但变量名不能与已经有的字段名相同;
  
 
  4、响应时间小于500ms
  tests[‘Response time is less than 500ms‘] = responseTime < 500;
  在postman中给的是相应时间小于200ms,500ms跟200ms相差不大,具体应该多少,凭君喜好,甚至可以更大,单位是ms;
 
  5、验证响应报文的JSON格式:
  //最简单的格式验证
  var schema = {
    properties: {
      err_code: {type: ‘int‘},
      err_msg: {type: ‘string‘}
    }
  };
  tests["Valid data schema"] = tv4.validate(responseBody, schema);
  先声明一个变量,在构造一个json格式赋值给变量schema,当然这个构造的json格式,就应该是接口返回的理论上的json格式,通过运行接口获取实际返回的responseBody与构造的标准json格式对比,看是否符合;这里也用到了tv4工具库中的validate()方法来对比json格式;
 
  //带有字段描述的响应json格式验证
  var schema = {
    properties:{
      "err_code":{
        "description": "The code of response!",
        "type": "int"
      },
      "err_msg":{
        "description": "The message of response!",
        "type": "string"
      }
    }
  };
  tests["valid response schema"] = tv4.validate(responseBody, schema);
 
  6、验证相应报文中是否包含某字段:
  tests["body has status"] = jsonData.status = true;
 
  7、先判断某字段是否存在,若存在则设置环境变量,若不存在则不设置:
  if (jsonData.status) {
    tests["body has status"] = true;
    postman.setEnvironmentVariable("status", jsonData.status);
  }
  else {
    tests["body has status"] = false;
  }

 

 

Pre-request script 与Test script相互调用:
 
  1、在pre-request script中随机生成cardno和cardname,并设置成环境变量:
  postman.setEnvironmentVariable("random_cardno", Math.round(Math.random()*9999999));
  postman.setEnvironmentVariable("random_cardname", ("0000" + (Math.random()*Math.pow(36,4) << 0).toString(36)).slice(-4));
 
  发起请求后,test script调用环境变量验证相应中的cardname是否正确,同时记录新卡id:
  var data = JSON.parse(responseBody); tests["check cardname"] = data.desc === environment.random_cardname;                                        postman.setEnvironmentVariable("new_card_id", data.id);
 
  2、将某请求获取到的token跟user_id设置为环境变量,以供后续使用:
   技术分享
  在Test script编辑器中键入如下脚本:
  var data = JSON.parse(responseBody);
  if (data.token) {
     tests["Body has token"] = true;
    postman.setEnvironmentVariable("user_id", data.user_id);
        postman.setEnvironmentVariable("token", data.token);
  }
  else {
    tests["Body has token"] = false;
  }
  如果上面的测试是在主窗口或者集合运行器中执行,那么 user_id 和 token 会自动地被添加到环境变量中。
  发送一个POST请求到 {{url}}/blog/posts ,并将 user_id 和 token 添加在URL参数中:
   技术分享

 

  调用环境中设置的环境变量使用: {{EnviromentValue}}
  请求成功的话将返回一个带有post_id的JSON,将文章ID保存到环境变量:
  var data = JSON.parse(responseBody);
  if (data.post_id) {
    tests["post_id found"] = true;
    postman.setEnvironmentVariable("post_id", data.post_id);
  }
  else {
    tests["post_id found"] = false;
  }
 
  将通过上面返回的文章ID来获取我们创建的文章。这里我们将用到Postman内置的  tv4 JSON 验证器来检查服务器响应的JSON。
  创建一个GET请求到 {{url}}/blog/posts/{{post_id}},并将下面这段代码添加到测试编辑器中:
  var schema = {
    "type": "object",
    "properties": {
      "content": "string",
      "created_at": "integer",
      "id": "integer" },
    "required": ["content", "created_at", "id"]
  };
  var data = JSON.parse(responseBody);
  var result = tv4.validateResult(data, schema);
  tests["Valid schema"] = result.valid;
  
 
结语:

   js语法规则很多,但设置pre-request script跟test script常用的也没有很多,认真体会上面列出的常用断言的语法规则,才能更好的使用;当需要构造特殊场景的时候,没办法请教大神吧;

  

 

参考资料:

 

三、postman测试断言设置语法

标签:post   stat   time   body   javascrip   默认参数   math   san   ida   

原文地址:http://www.cnblogs.com/zanjiahaoge666/p/6388434.html

  • 2
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值