首页 > 其他 > 详细

postman断言和接口返回值获取方法

时间:2021-05-21 14:29:27      阅读:57      评论:0      收藏:0      [点我收藏+]

一、断言

在 postman 中我们是在Tests标签中编写断言,同时右侧封装了常用的断言,当然 Tests 除了可以作为断言,还可以当做后置处理器来编写一些后置处理代码,经常应用于:

【1】获取当前接口的响应,传递给下一个接口
【2】控制多个接口间的执行顺序。

技术分享图片

 

二、常见断言方法

1、状态码断言

   1)判断接口响应的状态码

pm.test("Status code is 200", function () {//Status code is 200是断言名称,可以自行修改
pm.response.to.have.status(200); //检查响应状态码是否为200 });

   2)判断接口响应码是否与预期集合中的某个值一致

pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201,202]);  //检查响应码是否为201或者202
});

   3)判断状态码名称(也就是状态码后面的描述)是否包含某个字符串

pm.test("Status code name has string", function () {
    pm.response.to.have.status("OK");  //判断状态码名称是否为OK
});

2、响应内容断言

1)检查响应结果中是否包含指定的字符串
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
2)响应结果如果是json,检查具体的某个json值
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
3)检查实际获取的响应体(即 Body 信息)与预期结果的响应体是否完全一致
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

3、响应头断言

1)检查响应的头域信息(Headers)是否与预期一致
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

4、响应速度断言

 1)判断实际响应时间是否与低于预期时间

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

实例

技术分享图片

针对上面的返回结果,我们设置断言如下

技术分享图片

注意:postman获取断言时,任何响应都必须转为JsonData 对象。例如我们想获取如下响应信息中键值为 name 的值:

{
  "reponse": {
    "person": {
      "name": "hai",
      "age": 18
    }
  }
}

此时我们应该:

//第一步将响应转为 jsonData 对象
jsonData = pm.response.json();
//第二步通过 . 获取到我们想要的 age 的值
var age = jsonData.reponse.person.age;

三、常用断言对应的脚本

1.清除一个环境变量

   postman.clearEnvironmentVariable("variable_key");

2.断言响应数据中是否存在某个元素

  tests["//断言返回的数据中是否存在__pid__这个元素"] = responseBody.has("pid");

3.断言response等于预期内容

   tests["Body is correct"] = responseBody === "response_body_string";

4.断言json解析后的key的值等于预期内容

   tests["Args key contains argument passed as url parameter"] = ‘test‘ in responseJSON.args

5.检查response的header信息是否有被测字段

   tests["Content-Type is present"] = postman.getResponseHeader("Content-Type");

6.校验响应数据中,返回的数据类型

   var jsonData = JSON.parse(responseBody);//第一步先转化为json字符串。其中变量(jsonData)可以自行定义......
   tests["//data.category.name__valuse的值的类型是不是string"] = typeof(jsonData.data.category[0].name) == "string";

7.响应时间判断

   tests["Response time is less than 200ms"] = responseTime < 200;

8.设置环境变量

   postman.setEnvironmentVariable("variable_key", "variable_value");

9.断言状态码

   tests["Status code is 200"] = responseCode.code != 400;

10.检查响应码name

   tests["Status code name has string"] = responseCode.name.has("Created");

11.断言成功的post请求返回码

   tests["Successful POST request"] = responseCode.code === 201 || responseCode.code === 202;

四、获取接口返回值

1、获取响应行中的状态码:

//获取数据
var code=responseCode.code;
//打印code
tests[code]=true;

如下图:
技术分享图片
2、获取响应行中状态码名字
//获取数据
var codename=responseCode.name;
//打印name
tests[codename]=responseCode.name;

如下图:
技术分享图片

 3、获取响应时间

//获取响应时间
var time=responseTime;
tests[time]=true;

如下图:
技术分享图片

4、获取响应头

//获取响应头部信息的Content-Type
var header=postman.getResponseHeader(‘Content-Type‘);
//打印
tests[header]=true;
如下图
技术分享图片
5、获取响应的cookies值(括号中填写cookies的name值)
//获取cookies中的value值
var cookies=postman.getResponseCookie(‘cookies的name值‘).value;
//打印
tests[cookies]=true;

如下图所示:
技术分享图片

6、获取响应的正文

//获取body
var body=responseBody;
//打印
tests[body]=true;

如下图示:
技术分享图片

7、使用正则表达式截取响应内容的部分内容,通过要截取的字符串左右边界截取

//获取body
var body=responseBody;
//获取body中的title
var title=body.match(new RegExp(‘<title>(.+?)</title>‘));
//打印title
tests[title]=true;

如下图示:

技术分享图片

8、返回的是json数据,可以通过转换成json对象然后解析

//获取body并将返回数据转换成json对象
var responseData=JSON.parse(responseBody);
//打印返回数据中的msg数据
tests[responseData.msg]=true;
如下图示:

技术分享图片

9、转化XML格式的响应内容成JSON对象---Convert XML body to a JSON object

var jsonObject = xml2Json(responseBody);

postman断言和接口返回值获取方法

原文:https://www.cnblogs.com/xnancy/p/14782022.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!