快速上手postman测试

0. test的构成

一个标准test的写法如下:

pm.test("test name", function () {
    //测试逻辑
});

它由两部分构成:

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

一个具体的例子如下:

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
  • 在Tests窗口写测试
  • 点击send发送请求
  • 在Test Results窗口查看结果

2. 批量test

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


image

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


image

2. 一些常用的变量

//响应的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严格相等,例:

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相等。例:

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。例:

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

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。例:

//响应时间小于200ms
pm.expect(pm.response.responseTime).to.be.below(200);

6. expect(a).to.be.above(b)

a大于b。

更多断言,参见

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返回码。例:

//http code 200
pm.response.to.have.status(200);

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

判断响应头字段。例

//响应头中有Cache-Control,其值为no-cache
pm.response.to.have.header('Cache-Control', 'no-cache');  

更多使用参见

https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/#response-assertion-api-available-in-the-test-scripts

4. 引用沙箱中的js库

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

https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/

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

var crypto = require('crypto-js');
var uid = "[email protected]";
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);

5. 发送异步请求

详见

https://learning.postman.com/docs/postman/scripts/postman-sandbox-api-reference/#pmsendrequest

你可能感兴趣的:(快速上手postman测试)