笔记 - 使用 Postman 进行 API 测试

摁...在测试时很常遇到 API 的测试呢

笔记一下,给未来需要的自己还有其他需要的人


笔记 - 使用 Postman 进行 API 测试

环境准备

你只需要到 Postman 的官网就可以找到下载点啰

不建议使用 chrome 的扩充

Postman 的界面目前长这个样子笔记 - 使用 Postman 进行 API 测试

今天主要的主题在写测试,所以就不加以着墨功能的部分做介绍(因为感觉蛮简单的XD)

使用 Postman 撰写测试

在 postman 的页面中,你可以看到Tests 点击进去就会到这个画面,右手边他就有许多客制化好的方法,只要点下去就可以运行
想要知道更多的 Test Scripts 就可以点击过去官网看

首先我在 MockAPI这个网站上 做了一些 Mock 的数据
其 Url 为 http://5b74423ea5837400141908c3.mockapi.io/Demo

如果MockAPI的这个网站挂了,那我就...也没办法XD,还是供各位方便使用,如果有兴趣的人可以到 MockAPI的网站自己建立一个来玩玩~

使用get request 打过去回来数据 如下图

笔记 - 使用 Postman 进行 API 测试

这时候使用右手边的 Test Scripts 来建立测试,测试code如下

postman 的测试 code 都是由 javascript 所撰写
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm.test("first data id is 1", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData[0].id).to.eql("1");
});

pm.test("it has 15 records", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.length).to.eql(15);
});

以上测试 Code 主要判断

  • response 的 status 是否为 200
  • 第一笔数据的 id 是否为 1
  • 总笔数是否为15笔数据

使用 Enviroment 来变更 domain 或 测试数据

首先拿url来当范例,如果需要将 domain 抽换,则将需要变更的 domain 变成 {{url}}

{{变量名称}} 这里的变量名称则是Enviroment 或是 global用的变量名称 postman 会自动帮你带入

在右上角点击齿轮,可以看到你已经设定好的 environment 
笔记 - 使用 Postman 进行 API 测试

按下ADD之后就可以命名你的 Environment 名称,还有变化名称及初始值

笔记 - 使用 Postman 进行 API 测试

Demo 15 records 的 environment 长这个样子 [5b74423ea5837400141908c3]

笔记 - 使用 Postman 进行 API 测试

Demo 20 records 的 environment 长这个样子 [5b521e36d9b92700141c98ec]

笔记 - 使用 Postman 进行 API 测试

这时候就可以尝试点选右上角的 No Environment 来变更你的 Environment 来做测试

笔记 - 使用 Postman 进行 API 测试

当你使用 Demo 20 records 的环境时,会发现原本写的测试 fail了,原因是因为你的 Demo 20 records 的环境打过去回来的 response 数据笔数为 20 笔
所以这时候需要将测试数据抽换成 environment 的变量,就会这么做

先设定 environment 的变量

Demo 20 records 的 expectedRecords 设定为 20
Demo 15 records 的 expectedRecords 设定为 15

笔记 - 使用 Postman 进行 API 测试

修改测试 Code ,这时候判断笔数的测试 Code 就会长这个样子

expectedRecords = parseInt(pm.environment.get("expectedRecords"));
pm.test("it has"+ expectedRecords +" records", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.length).to.eql(expectedRecords);
});

先取得 environment 然后转型成 int (不转型的话会错误,原因是因为 environment 默认的变量型态为 string)

现在两个测试都可以因为 environment 改变而变动测试期望数据而通过了

笔记 - 使用 Postman 进行 API 测试

Run Postman

在 postman 有个功能 可以帮你把一整包的 collection 来执行,执行后也能够将执行结果导出

现在把刚才写好的一支API测试存进一个 Collection然后到 Collection 的地方找到创建好的 Collection 来让 Postman run 写好的 测试

笔记 - 使用 Postman 进行 API 测试

点击Run之后会出现下面这个画面

笔记 - 使用 Postman 进行 API 测试

可以看到画面左边有

  • Environment 可以让你选择
  • Iterations 则是你需要 run几次这个collection
  • Delay则是你run完这个 API 之后你需要等待几秒再开始打下一个 API
  • Log Responses 则是可以让你选择纪录的 Response 型态为 fail 的时候要纪录或者是都要记录之类的 [旁边的提示有说 如果collection是比较大的 则有可能会影响到性能测试的结果]
  • Data 选择你要使用的文件
  • Keep variable values 如果勾起来则会把其中更动过的 变量保存起来

接下来就来run个 20 次 看会发生什么事吧!

笔记 - 使用 Postman 进行 API 测试

可以看到每个 request的时间 跟测试结果(几个测试通过,几个失败),还有status

返回到刚才那页也可以看到刚才执行的结果
笔记 - 使用 Postman 进行 API 测试

以上是今天的笔记,感谢各位收看,如有错误,请各位大大告诉我~

摁...明天下班有时间就写个 newman的东西好了,他可以帮助我们产生一些报表~

原文:大专栏  笔记 - 使用 Postman 进行 API 测试


上一篇:1006 Sign In and Sign Out (25分)


下一篇:Kafka note