前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >快速上手postman测试

快速上手postman测试

作者头像
跑马溜溜的球
发布2020-12-07 14:50:34
5740
发布2020-12-07 14:50:34
举报
文章被收录于专栏:日积月累1024

0. test的构成

一个标准test的写法如下:

代码语言:javascript
复制
pm.test("test name", function () {
    //测试逻辑
});

它由两部分构成:

  1. test name. 这个name会出现在你的测试报告中
  2. function. 这部分包含你的居体测试逻辑(解析数据,断言等等)

一个具体的例子如下:

代码语言:javascript
复制
pm.test("http code is 200", function () {
    //判断http返回码
    pm.response.to.have.status(200);
});

pm.test("response data is right", function () {
    //解析返回值
    var response = JSON.parse(responseBody);
        
    //通过断言判断返回值的正确性
    pm.expect(response.msg).to.eql("ok");
    pm.expect(response.code).to.eql(0);
});

1. 如何运行/查看一个test

1. 单个test
image
image
  • 在Tests窗口写测试
  • 点击send发送请求
  • 在Test Results窗口查看结果
2. 批量test

如下图所示,可以整体运行一个集合的中的全部测试

image
image

运行后可看到类似下图的测试结果

image
image

2. 一些常用的变量

代码语言:javascript
复制
//响应的http code
pm.response.code

//请求响应时间, 单位ms
pm.response.responseTime,

//返回回数据的大小,包含header    
pm.response.responseSize,
    
//响应头,一个object
responseHeaders
//取Content-Type
responseHeaders['Content-Type']

//响应体,字串。如果服务端返回的是json,需要JSON.parse后才能得到对应的json对象
responseBody

//获取相应cookie值
pm.cookies.get(cookieName:String)

3. 常用断言

3.1 pm.expect

1. pm.expect(a).to.equal(b)

a,b严格相等,例:

代码语言:javascript
复制
pm.test("response data is right", function () {
    var response = JSON.parse(responseBody);
    //response.code === 0
    pm.expect(response.code).to.eql(0);
});
2. pm.expect(a).to.deep.equal(b)

a,b为多层结构时,判断a,b相等。例:

代码语言:javascript
复制
pm.test("deep equal", function(){
    var a = {
        num1:[1,1,1], 
        num2:[2,2,2]
    };
    var b = {
        num1:[1,1,1], 
        num2:[2,2,2]
    };
    
    pm.expect(a).to.deep.equal(b);   
});
3. pm.expect(object).to.have.property(key)

object中有属性key。例:

代码语言:javascript
复制
pm.test("have property", function(){
    var object = {
        name:"ball",
        money:0,
        age:100
    }
    
    pm.expect(object).to.have.property('age'); 
});
4. pm.expect(a).to.include(‘b’)

a中包含b

代码语言:javascript
复制
pm.test("include", function(){
    //a可以是字串
    var str = "this is a test";
    pm.expect(str).to.include('this');
    
    //a可以是数组,此时b只能是简单值,不能是array。若希望b为array,需要用members方法做断言。
    var ary = [1,2,3,4];
    pm.expect(ary).to.include(2);
    
    //a可以是是object
    var obj = {
        name:"ball",
        money:0,
        age:100
    };
    pm.expect(obj).to.include({age:100, name:"ball"});
});
5. pm.expect(a).to.be.below(b)

a小于b。例:

代码语言:javascript
复制
//响应时间小于200ms
pm.expect(pm.response.responseTime).to.be.below(200);
6. expect(a).to.be.above(b)

a大于b。

更多断言,参见

代码语言:javascript
复制
https://learning.postman.com/docs/postman/scripts/test-examples/#assertion-library-examples
https://www.chaijs.com/api/bdd/

3.2 pm.response

1. pm.response.to.have.status(code:Number)

判断http返回码。例:

代码语言:javascript
复制
//http code 200
pm.response.to.have.status(200);

2. pm.response.to.have.header(key:String, optionalValue:String)

判断响应头字段。例

代码语言:javascript
复制
//响应头中有Cache-Control,其值为no-cache
pm.response.to.have.header('Cache-Control', 'no-cache');  

更多使用参见

代码语言:javascript
复制
https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/#response-assertion-api-available-in-the-test-scripts

4. 引用沙箱中的js库

postman的测试中可以使用很多js库。具体参见

代码语言:javascript
复制
https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/

一个使用crypto-js做AES加密的例子:

代码语言:javascript
复制
var crypto = require('crypto-js');
var uid = "999@qq.com";
var key = crypto.enc.Utf8.parse("112233");

var opt = {
    mode:crypto.mode.ECB, 
    padding:crypto.pad.Pkcs7
}

var userid = crypto.AES.encrypt(uid, key, opt);
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2020/04/17 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 0. test的构成
  • 1. 如何运行/查看一个test
    • 1. 单个test
      • 2. 批量test
      • 2. 一些常用的变量
      • 3. 常用断言
        • 3.1 pm.expect
          • 1. pm.expect(a).to.equal(b)
          • 2. pm.expect(a).to.deep.equal(b)
          • 3. pm.expect(object).to.have.property(key)
          • 4. pm.expect(a).to.include(‘b’)
          • 5. pm.expect(a).to.be.below(b)
          • 6. expect(a).to.be.above(b)
        • 3.2 pm.response
        • 4. 引用沙箱中的js库
        领券
        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档