51Testing软件测试论坛

标题: postman安装与简要操作 [打印本页]

作者: 测试积点老人    时间: 2018-11-30 15:36
标题: postman安装与简要操作
1、Postman接口测试工具

Postman简介与安装:

Postman是一款功能强大的网页调试与发送网页HTTP请求的Chrome插件。
它提供功能强大的 Web API & HTTP 请求调试。它能够发送任何类型的HTTP 请求 (GET, HEAD, POST, PUT..),附带任何数量的参数+ headers。

Postman功能:


Postman安装:


2、界面

[attach]119726[/attach]

3、Postman简单使用

http://www.bejson.com/  解析json格式数据的网站

https://developers.douban.com/wiki/?title=book_v2#get_book_search

[attach]119727[/attach]

开始开发--接口测试号申请

appID wx55614004f367f8ca

Appsecret 65515b46dd758dfdb09420bb7db2c67f

用户分组管理--创建分组

利用postman发送post请求、参数是json格式

[attach]119728[/attach]

页面访问请求(Post方法):

form-data、x-www-form-urlencoded、raw、binary的区别

1. form-data

就是http请求中的multipart/form-data,它会将表单的数据处理为一条消息,以标签为单元,用分隔符分开。既可以上传键值对,也可以上传文件。当上传的字段是文件时,会有Content-Type来说明文件类型;content-disposition,用来说明字段的一些信息;由于有boundary隔离,所以multipart/form-data既可以上传文件,也可以上传键值对,它采用了键值对的方式,所以可以上传多个文件。

2.x-www-form-urlencoded:

就是application/x-www-from-urlencoded,会将表单内的数据转换为键值对

3.raw

可以上传任意格式的文本,可以上传text、json、xml、html等

Cookies:

Postman v0.8.x以上版本 可以显示浏览器 cookies, 就像它与浏览器共享相同的环境一样。对于本地应用, 你需要启用Interceptor,然后你就可以在响应部分的 Cookies 选项卡中查看响应的 cookies。

Tests:

Tests为执行断言后的测试结果

4、常规使用--断言Tests

测试返回的body包含的内容

  1. tests["Body matches string"] =responseBody.has("百度搜索");
复制代码

测试返回的状态码

  1. <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["Status code is 200"] =responseCode.code === 200;</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["1+1"] = 1+1 === 2;</p>
复制代码

测试返回的状态信息

  1. tests["Status code name hasstring"] = responseCode.name.has("OK");
复制代码
  1. tests["hello is he"] ="hello".has("he");
复制代码

测试响应时间是否低于200ms

  1. tests["Response time is less than200ms"] = responseTime < 200;
复制代码
  1. 检查响应body中等于指定string--Check if response body is equal to a string
复制代码
  1. tests["Body is correct"] =responseBody === "response_body_string";
复制代码
  1. <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">检查Content-Type是否包含在header返回(大小写不敏感)</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["Content-Type is present"]= postman.getResponseHeader("Content-Type");</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">检查Content-Type是否包含在header返回(大小写敏感)</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["Content-Type is present"]= responseHeaders.hasOwnProperty("Content-Type");</p>
复制代码

检查成功post的请求

  1. tests["Successful POST request"]= responseCode.code === 201 || responseCode.code === 202 || responseCode.code=== 200;
复制代码

检查JSON某字段值

  1. <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">var jsonData = JSON.parse(responseBody);</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">tests["Your test name"] =jsonData.expires_in === 7200;</p>
复制代码

5、接口持久化

把单个接口保存到文件夹(接口项目)中,再接口项目文件夹下新建文件夹(模块)

6、环境变量:

环境变量:

postman可直接通过切换环境来实现多个环境中的参数切换。常用功能:环境地址切换、全局变量使用。

7、Postman导入导出功能

8、Postman持久化运行

[attach]119729[/attach]

[attach]119730[/attach]

9、postman提取接口返回值

1、变量赋值的方式

[attach]119731[/attach]

  1. let jsondata = JSON.parse(responseBody) ;

  2. let access_token = jsondata.access_token ;

  3. let expires_in = jsondata.expires_in ;

  4. tests["时效"] =expires_in === 7200 ;
复制代码

10、保存到全局变量

  1. <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">var jsondata = JSON.parse(responseBody) ;</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">postman.setGlobalVariable("tokenid",jsondata.access_token);</p>
复制代码

11、接口串行传参

把上一个接口的返回值送给下一个接口作为输入参数

在postman中通过全局变量实现

[attach]119732[/attach]

[attach]119733[/attach]

12、Postman动态传参

在runner里循环发n次请求/做自动化测试时,有些接口不适合写死参数:

1.Postman有以下内建变量,适合一次性使用:

  1.    {{$guid}}//生成GUID
复制代码
  1. <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">   {{$timestamp}}//当前时间戳</p><p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">   {{$randomInt}}//0-1000的随机整数</p>
复制代码

2.参数依赖上一个请求的返回:

    上个请求的Tests里提取参数存环境变量,这个请求里用{{变量名}}取值

3.参数每次都不同,但之后的断言或别的请求里可能还要用:

    在Pre-requestScript里写代码处理,存为环境变量,参数里用{{变量名}}取值

5、Postman流程控制

流程控制只有在collection runner或Newman里才生效

设2个接口的顺序为:接口A-->接口B

如果希望执行顺序为:接口A -> 接口B -> 接口A,又不想复制一份接口A

A接口:

[attach]119734[/attach]

B接口:

[attach]119735[/attach]

失败的测试自动重新运行

6、Postman调试功能(日志)

1.使用  Ctrl+Alt+c 可以打开Postman的控制台,可以查看请求和响应(只适用于客户端,不适用于Chrome 插件)

[attach]119736[/attach]

2.用console.log()打印,到控制台看

  1. console.log(jsondata.access_token);
复制代码

3.tests['这里拼出你想看的字符串']= true在界面/报告看断言

  1. tests[jsondata.access_token] = false;
复制代码

7、定义公共函数

常用公共函数:

1).判断是否超时(assertNotTimeout):

  1. varhasResponse=postman.getResponseHeader('Content-Type')?true:false;if(!hasResponse) tests['服务端在超时前没返回任何数据,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false;
复制代码

2).未超时,显示发出的请求参数(logParams):

  1. if(hasResponse) tests[`[INFO] 请求参数(超时没返回时不解析):${JSON.stringify(request.data)}`]=true;
复制代码

3).未超时,解析返回的JSON对象(getResponseJson):

  1. try{if(hasResponse) var json=JSON.parse(responseBody);}catch(err){tests['服务端没返回合法的JSON格式,请检查相关服务、网络或反向代理设置(以下跳过其他断言)']=false; tests[`[INFO] 返回:${responseBody}`]=true;console.error(err);}
复制代码

4).返回元素的类型(assertType):

  1. var assertType=(name,value,type)=>{letisType=(type==='array')? Array.isArray(value):typeof value===type;tests[`${name}为${type}(实际值:${value})`]=isType;};
复制代码

5).返回元素是否与预期值一致(assertEqual):

  1. var assertEqual=(name,actual,expected)=>{tests[`${name}等于${expected}(实际值:${actual})`]=actual===expected;};
复制代码

6).返回元素是否与预期值不一致(assertNotEqual):

  1. <p style="box-sizing: border-box; outline: 0px; margin-bottom: 16px; line-height: 26px; overflow-x: auto;">varassertNotEqual=(name,actual,expected)=>{tests[`${name}不等于${expected}(实际值:${actual})`]=actual!==expected;};</p>
复制代码






欢迎光临 51Testing软件测试论坛 (http://bbs.51testing.com/) Powered by Discuz! X3.2