用Postman做HTTP测试

| 分类 深入学习之网络原理  网络安全之web安全  | 标签 HTTP  网络  JSON  JavaScript  Postman  RESTful  Github  Tests  Pre-request 

选择Github API 作为测试对象!

比如在Postman 中构造请求去查询我的个人信息

按照Github 提供的API,直接GET 方法请求https://api.github.com/users/xumenger即可

应答内容有,应答头(包括应答码……),还有应答体,应答体是这样的

{
    "login": "xumenger",
    "id": 9197109,
    "node_id": "MDQ6VXNlcjkxOTcxMDk=",
    "avatar_url": "https://avatars3.githubusercontent.com/u/9197109?v=4",
    "gravatar_id": "",
    "url": "https://api.github.com/users/xumenger",
    "html_url": "https://github.com/xumenger",
    "followers_url": "https://api.github.com/users/xumenger/followers",

    .
    .
    .
}

Tests测试案例

Test scripts are written in JavaScript, and are run after the response is received

Test 脚本使用JS 编写,在收到应答后执行

针对上面请求返回的应答,用JavaScript 编写Tests 如下:

// 解析JSON格式的应答体
var respJson = JSON.parse(responseBody)

// 应答码断言测试
tests["HTTP应答码为200"] = responseCode.code === 200
tests["HTTP应答码为400"] = responseCode.code === 400

// 校验json中的用户名
tests["用户名验证"] = respJson.login === "xumenger"

运行点击Send 之后,在收到应答后,按照Tests 的内容对应答进行断言测试的结果如下

使用新的Github API,通过分页的方式查询某个用户的仓库,https://api.github.com/users/xumenger/repos?page=2&per_page=3

针对这种带有数组的Json 应答报文,比如可以写一个这样的Tests 脚本

// 解析JSON格式的应答体
var respJson = JSON.parse(responseBody)

// 获取应答数组中的第一个,解析其中的owner->login
tests["用户名验证"] = respJson[0].owner.login === "xumenger"

Learn more about test script: https://learning.postman.com/docs/postman/scripts/test_scripts/

在Tests中编写循环

返回的应答是JSON 格式的数据,比如是这样的内容

{
    "Head": {
        "Code": "SUCCESS",
        "Message": "处理成功"
    },
    "Body": {
        "Users": [
            {
                "name": "xumenger",
                "age": "10",
                "address": "hangzhou"
            },
            {
                "name": "joker",
                "age": "100",
                "address": "getan"
            }
        ]
    }
}

可以通过JavaScript 编写代码循环处理

// 解析JSON格式的应答体
var respJson = JSON.parse(responseBody);

// HTTP应答码断言测试
tests["HTTP应答码为200"] = responseCode.code === 200;

// 校验json中的应答码
tests["应答码为SUCCESS"] = respJson.Head.Code === "SUCCESS";

//循环遍历
for (var i=0; i<2; i++)
{
    if("xumenger" == respJson.Body.Users[i].name)
    {
        tests["地址为hangzhou"] = respJson.Body.Users[i].address === "hangzhou";
    }
}

Pre-request Script

Pre-request scripts are written in JavaScript, and are run before the request is sent

Pre-request 脚本使用JS 编写,在发送请求前

可以在Pre-request Script 中获取URL 中的参数、在控制台打印等

比如编写脚本如下

// 获取url中的参数
var pageId = pm.request.url.query.get('page')
var perPage = pm.request.url.query.get('per_page')

// 在控制台打印
console.log(pageId);
console.log(perPage);

发起请求,然后打开控制台,看到的结果如下

另外还可以在Pre-request 中做这些事情

  • Get a global variable
  • Get a variable
  • Set an environment variable
  • Set a global variable
  • Clear an environment variable
  • Clear a global variable
  • Send a request

Learn more about pre-request script: https://learning.postman.com/docs/postman/scripts/pre-request-scripts/

参考资料

本文只展示了简单的Tests、Pre-request 语法,作为一个简单的入门,作为一个HTTP 测试,甚至是Web 渗透工具,Postman 组合Tests、Pre-request 可以实现很强大的功能!




如果本篇文章对您有所帮助,您可以通过微信(左)或支付宝(右)对作者进行打赏!


上一篇     下一篇