美文网首页程序员
快速上手postman测试

快速上手postman测试

作者: 跑马溜溜的球 | 来源:发表于2020-04-17 15:13 被阅读0次

    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 = "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);
    

    5. 发送异步请求

    详见

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

    相关文章

      网友评论

        本文标题:快速上手postman测试

        本文链接:https://www.haomeiwen.com/subject/klhyvhtx.html