Traceless

[初级]使用Postman进行WEB API接口测试(使用例子)
使用Postman进行Api接口测试 Postman 作为一个HTTP测试工具,非常有用,相信很多小伙伴都使用过,...
扫描右侧二维码阅读全文
21
2018/11

[初级]使用Postman进行WEB API接口测试(使用例子)

使用Postman进行Api接口测试

Postman 作为一个HTTP测试工具,非常有用,相信很多小伙伴都使用过,而很多时候我们只是使用它进行接口的单次测试,本文不会从最最基本介绍什么是API什么是GET POST 什么是HTTP请求,也不会介绍Postman的最最基本的GET POST请求的使用,需要了解的可以百度进行学习。

本文大致记录了

  1. 全局变量、环境变量的配置
  2. 使用postman的Runner进行接口回归测试
  3. 执行测试

第二步中,涉及到Test中断言的书写、变量的获取、使用、修改等

我们这里使用的Postman为Windows PC版程序,chrome、MAC等版本可能存在界面不同,但使用和配置方式、断言书写等语法应该是一致的。

全局变量、环境变量的配置

变量:可以理解为临时保存在作用域中的静态变量,可以在作用域中进行更改、读取的值,每个变量有一个名字和一个值(key和value),key用于在使用的时候进行变量的引用。

Postman的变量使用{{key}}的形式来进行引用。

变量设置


如图右上角小齿轮,打开环境管理器(MANAGE ENVIRONMENTS)如下:

"Add":添加一个环境集合,填入环境名称,在下方配置变量列表

这里beartoken作为API调用的时身份认证的Token使用,值可以先随便填,我们在获取token的接口中为它赋值。
考虑到测试方案可能会分享给其他人使用,我们定义一个urlroot变量存放我们的WEBAPI的根地址,这样,只需要修改该变量的值即可将测试使用到任何一处API接口地址中。

使用postman的Runner进行接口回归测试


Postman的runner以collection为单位进行串行调用,我们需要新建一个(右上角)带加号的按钮。

  1. 获取测试token
    要进行回归测试,首先要获取合法的token,我们专门为测试服准备了一个获取测试token的接口,其返回格式如下:
    {
    "code": 0,
    "data": "string",
    "errorcode": "string",
    "msg": "string",
    "ts": 0
    }

    其中data为测试token具体内容。

获取到token以后,我们需要将其从返回体的data中取出,并赋值给变量{{beartoken}}在Tests中我们这样操作。

pm.test("Body matches string", function () {
    var resp = JSON.parse(responseBody);
    pm.environment.set("beartoken","Bearer "+resp["data"]);    
    console.log(pm.environment.get("beartoken"));
})

line2:讲请求体返回的字符串格式化为json。

line3:使用 pm.environment.set("变量名","变量值")为变量进行赋值,Tests中使用类js语法,如果需要在值前额外拼接字符串直接使用 + 进行拼接即可。

line4:在控制台中打印调试信息。
控制台如图:

  1. 进行业务接口调用
    我们获取到了测试token并且赋值给变量,下面我们需要怎么在业务接口中使用呢。
    首先,我们的token携带在token中,因此,我们需要在请求的Header中加入如下设置

此处的key具体情况需要根据自身业务填写,本次demo中,token在header中的变量名为Authorization,value中直接使用{{beartoken}}即可引用到值了,postman会有智能提示,非常方便。

  1. 判断接口执行结果
    一般我们的api都会携带code进行业务状况的描述,我们假设code=0是接口调用成功。
    这里我们可以进行两种验证
    1️⃣ 简单判断code是否为0
    2️⃣ 判断data中的返回是否为预期值

使用如下返回举例:

{
    "code": 0,
    "msg": null,
    "errorcode": null,
    "data": [
        {
            "id": 11,
            "amt": 1000000
        },
        {
            "id": 12,
            "amt": 0
        },
        {
            "id": 13,
            "amt": 30,
            "nts": 1542783990
        }
    ],
    "ts": 1542783510
}

在Tests中进行如下书写:

pm.test("codeMatching", function () {
    var resp = JSON.parse(responseBody);
    pm.expect(resp["code"]).to.eql(0);
})
pm.test("amtMatching", function () {
    var resp = JSON.parse(responseBody);
    pm.expect(resp["data"][0]["amt"]).to.eql(1000000);
})

line2:将请求体解析为json.
(pm.expect表示 期望)
line3:期望返回体中的code的值为0.
line7:期望返回体data数值中的第一项的amt值为1000000
执行后如图

若符合预期,会出现Pass标签,如任意一个失败都会被标记Failed

在断言书写部分右边有书写帮助

直接点击相应选项即可快速生成模板代码进行填充即可使用。

执行测试


点击runner按钮,弹出执行框。

1.选择要进行测试的集合。
2.选择测试环境(里面有配置好的变量)
3.填写迭代次数
4.填写接口和接口之间执行的延迟等待时间
5.选择日志输出方式(所有请求、仅失败请求、不记日志)
6.选择变量文件(变量还可以从自定义文件中导入并且使用,本文暂不介绍)
在必要环节设置完毕后,下方的按钮被点亮,点击Run即可。

可以在结果面板详细查看每次请求的统计信息、具体信息等,这里就不介绍了,界面功能强大简单明了,相信机智的你一定能一眼就看懂。

到此为止,初级的Post接口测试和简单的压力测试(把迭代次数增加即可)都可以通过Postman进行测试了.

补充:

经过测试所有request["data"]类似写法都可以写成request.data来进行取值,数组仍然使用[index]取值。
最后修改:2018 年 11 月 21 日 04 : 57 PM
如果觉得我的文章对你有用,请随意赞赏

发表评论

1 条评论

  1. Traceless

    注意:经过测试所有request["data"]类似写法都可以写成request.data来进行取值,数组仍然使用[index]取值。