导航

[postman][API 测试]用Postman做RestAPI测试学习笔记

Posted on 2017-09-21 21:32  carol2000  阅读(1291)  评论(0编辑  收藏  举报

痛点:最近有个API网关的兼容性测试任务,需要验证API是否可用,返回值符合预期,如果手工复制粘贴curl命令,繁琐且低效

调研时发现了Postman 这个chrom插件,试用了2天后发现使用起来很方便,现总结如下:

Postman简介:Postman是一种网页调试与发送网页http请求的chrome插件。我们可以用来很方便的模拟get或者post或者其他方式的请求来调试接口

安装:通过chrome浏览器打开chrome网上应用店直接添加到chrome插件中 (可能需要番墙...)

使用方式: 对照测试软件的接口API文档,设置对应的Header Body Test校验内容

使用技巧总结:

1.在body中用{{x}}使用环境变量,在test中environment.x调用环境变量


2.注册环境变量:postman.setEnvironmentVariable("volumeid", responseJSON.data.elements[0].id); 这样就可以在下个case中直接调用了

 

3.延时1-10秒
GET https://postman-echo.com/delay/[1~10]

4.延时指定的毫秒
function pausecomp(millis)
{
var date = new Date();
var curDate = null;
do { curDate = new Date(); }
while(curDate-date < millis);
}
//pausecomp(10000);
pausecomp(environment['sleep-interval']);

5.数组json处理
//refer to https://stackoverflow.com/questions/42257293/extract-value-from-array-of-objects-in-postman
postman.setEnvironmentVariable("volumeid", responseJSON.data.elements[0].id);

6. 所有case写完后,可以统一Run (如果不加入try -catch处理,会停在第一个调用方法失败的地方)

7. Test 标签页做校验

 1 var responseJSON;
 2 try { 
 3 responseJSON = JSON.parse(responseBody); 
 4 tests['response is valid JSON'] = true;
 5 }
 6 catch (e) { 
 7 responseJSON = {}; 
 8 tests['response is valid JSON'] = false;
 9 }
10 
11 if (responseJSON.code !== 0) return;
12 // continue with other tests
13 
14 if (responseBody.has("attached")) return;
15 if (responseBody.has("error_attach")) return;
16 if (responseBody.has("error_detach")) return;
17 if (responseBody.has("attaching")) return;
18 if (responseBody.has("detaching")) return;
19 
20 tests["Create response code is 200"] = responseCode.code === 200;
21 tests["get attached Status"] = responseBody.has("detached");
22 tests["get attached Status"] = responseBody.has("host_ip");

 

 

Postman遇到的坑:
1. "snapshot_id":"{{snapshot_id}}" ,如果不加双引号,会报错: "detail": "invalid character 's' looking for beginning of value",Postman有时候不会自动处理双引号