美文网首页接口测试
[PPJ_07] Postman断言-案例实践

[PPJ_07] Postman断言-案例实践

作者: Fighting_001 | 来源:发表于2018-10-07 02:04 被阅读157次

    一、断言简介

    通常执行完成测试时,需要对测试结果进行检验,判断返回结果是否符合预期效果,即为断言。在接口测试中一般会根据响应状态码or响应返回的数据进行断言。

    断言通俗理解:检验预期值与实际值是否相等or相匹配
    预期值 = 实际值 ==> Pass(通过)
    预期值 ≠ 实际值 ==> Fail(不通过)

    Postman提供了一个测试沙箱(Postman Sandbox),是一个JavaScript执行环境,可通过JS脚本来编写Pre-request Script和Test Script。

    • Pre-request Script:预置脚本。可用来修改一些默认参数,在请求发送之前执行。
    • Test Script:测试脚本。当接收到响应之后,再执行测试脚本。

    二、断言案例实践

    案例:
    请求URL:https://postman-echo.com/get?uname={{uname}}&pwd={{pwd}}
    请求方式:GET
    传递参数:uname=test00001; pwd=123456
    断言规则
    1)响应状态码:200
    2)响应内容:返回的uname参数值与定义的一致
    3)响应时间:小于0.5s

    响应数据分析:
    设置断言之前,可先观察请求URL所返回的数据内容和结构,本次若获取uname参数值,则需要归属到args对象中,如:args['uname']

    {
        "args": {
            "uname": "test00001",
            "pwd": "123456"
        },
        "headers": {
            "host": "postman-echo.com",
            "accept": "*/*",
            "accept-encoding": "gzip, deflate",
            "cache-control": "no-cache",
            "content-type": "application/x-www-form-urlencoded",
            "cookie": "sails.sid=s%3AL01AlY9D9KhbDCilImCJmV6yx-S31-bO.fmMAxLtL2yztemp4XCPAWhlwvVYDzxkg44QGIuFND50",
            "postman-token": "29de5674-c256-43e5-99b1-d7b2cbf28208",
            "user-agent": "PostmanRuntime/7.3.0",
            "x-forwarded-port": "443",
            "x-forwarded-proto": "https"
        },
        "url": "https://postman-echo.com/get?uname=test00001&pwd=123456"
    }
    

    Pre-request Script

    pm.variables.set("uname","test00001");  //设置本地变量:uname=test00001
    pm.variables.set("pwd","123456");       //设置本地变量:pwd=123456
    

    Test Script
    利用Postman界面右侧的【SINPPETS】区域的常用代码片段,点击某个代码名称,即可添加到左侧【Tests】编辑区,然后进行针对性的调整

    //获取本地变量uanme的参数值,赋给变量username存储
    var username = pm.variables.get("uname");
    //在Postman Console控制台输出username值
    console.log(username);
    
    //检验JSON格式的响应数据中uname是否为"test00001"
    pm.test("返回uname值 = test00001", function () {
        var jsonData = pm.response.json();
        pm.expect(jsonData.args['uname']).to.eql(username);
    });
    
    //检验是否包含字符串"test00001"
    pm.test("包含字符串'test00001'", function () {
        pm.expect(pm.response.text()).to.include("test00001");
    });
    
    //检验响应时间是否小于0.5s
    pm.test("响应时间 < 500ms", function () {
        pm.expect(pm.response.responseTime).to.be.below(500);
    });
    
    //检验响应的状态码是否为200
    pm.test("Status code is 200", function () {
        pm.response.to.have.status(200);
    });
    

    执行结果:

    相关文章

      网友评论

        本文标题:[PPJ_07] Postman断言-案例实践

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