Postman获取响应值

一:postman设置断言的流程

  1. 在tests页签截取要对比的实际响应信息;(响应头、响应正文、响应状态码等)
  2. 利用断言语句 tests[] 或 chai.js 形式把实际响应信息与期望结果对比;
  3. 执行请求进行结果查看;

二、截取实际响应信息的新老版本代码对比

截取名称老版本新版本
响应状态码 responseCode.code pm.response.code
响应状态信息 responseCode.name pm.response.status
响应头 postman.getResponseHeader('c_k') pm.response.headers.get('c_k')
响应cookie postman.getResponseCookie('c_n').value pm.cookies.get('c_n')
响应正文 responseBody pm.response.text()
json格式响应正文 JSON.parse(responseBody) pm.response.json()
响应时间 responseTime pm.response.responseTime

 

三、tests断言基本语法

tests["case01 验证是否为true"] = true;    //false
tests["case02 验证是否1+1=2"] = 1+1 === 2;    //判断是否相等
tests["case03 验证是否包含123"] = "1234567hello".has("123");    //判断是否包含
tests["case04 验证是否3>5"] = 3 > 5 ;    //判断是否相等
tests["case05 与运算"] = 3 > 2 && 3>1 ;    //与运算
tests["case06 或运算"] = 3 > 2 || 3>5 ;    //或运算
tests["case07 非运算"] = !(3 > 2);    //非运算 

四、chai.js断言语法

    • 5.1 pm.expect()
复制代码
pm.test("测试用例标题", function () {
    pm.expect(true).to.be.true;    //chai.js断言编写处
});
pm.expect(2<5 && 3<6).to.be.true;    //判断是否为true
pm.expect('everything').to.be.ok;    //判断是否为真值  非空、非0 即为真
pm.expect('hello').to.equal('hello');    //判断是否相等
pm.expect({ foo: 'bar' }).to.eql({ foo: 'bar' });    //判断是否深度相等
pm.expect('foobar').to.have.string('bar');    //判断是否包含字符串
pm.expect('foobar').to.match(/^foo/);    //判断是否包含,支持正则表达式
......
复制代码
    • 5.2 pm.response
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);    //判断响应状态码是否是200
});

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");    //判断响应头部信息是否包含Content-Type字段
});
    • 5.3 tv4(Tiny Validator for JSON data)

          postman使用tv4和chai.js断言库可以进行json schema(结构)的断言

复制代码
var schema ={
   "type":"object",  //表示当前节点的类型,最外层type代表json的最外层是什么样的类型
   "properties":{     //代表当前节点的子节点信息。如 access_token 和 expires_in
       "access_token":{
           "type":"string"
       },
       "expires_in":{
           "type": "integer"
       }
   },
   "required": [      //一个数组类型,代表当前节点下必需的节点key
        "access_token",
        "expires_in"
    ]   
}

pm.test('Json Schema is valid', function() {
    var jsonData = pm.response.json();
    pm.expect(tv4.validate(jsonData, schema)).to.be.true;
});
复制代码

五、练习怎么获取响应值

复制代码
// pm.test("检查是否登录?",function(){
//     pm.expect(pm.response.text()).to.include("退出")
// });      断言响应正文是否含有“退出”两个字;

// var code=responseCode.code;    获取响应状态码
// tests[code]=true;

// var code5 =pm.response.code;  获取响应状态码
// tests[code5]=true;

// var info =responseCode.name;  获取响应状态信息
// tests[info]=true;

// var info2=pm.response.status;获取响应状态信息
// tests[info2]=true;

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

// var time1 =pm.response.responseTime  获取响应时间
// tests[time1]=true;

// tests ["case_demo_02:验证请求时间是否在10S--100S之间"]=time1>=10 ||time1<=100;   ---&&、||、!

// var head=postman.getResponseHeader('Server');
// tests[head]=true;

// var head2=pm.response.headers.get('Transfer-Encoding');
// tests[head2]=true;

// var cooks=postman.getResponseCookie('_login_time').value;
// tests [cooks]=true;



// var v =postman.getResponseHeader('Server');  获取相应头
// tests[v]=true;

// var v1 =pm.response.headers;     获取相应头
// tests[v1]=true;


//  var body=responseBody;   获取相应正文
//  tests[body]=true;

// var body2=pm.response.text();  获取相应正文
// tests[body2]=true;
复制代码

 

 

 

六、总结及反思

    • 实际工作中,断言库功能强大好用即可
    • json schema可以好好研究利用在接口测试过程中

 

posted @   TaylorSwift  阅读(1543)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 单元测试从入门到精通
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律
点击右上角即可分享
微信分享提示