51Testing软件测试论坛

 找回密码
 (注-册)加入51Testing

QQ登录

只需一步,快速开始

微信登录,快人一步

手机号码,快捷登录

查看: 1697|回复: 0
打印 上一主题 下一主题

postman安装与简要操作

[复制链接]
  • TA的每日心情
    擦汗
    5 小时前
  • 签到天数: 526 天

    连续签到: 3 天

    [LV.9]测试副司令

    跳转到指定楼层
    1#
    发表于 2018-11-30 15:36:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
    1、Postman接口测试工具

    Postman简介与安装:

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

    Postman功能:
    • 主要用于模拟网络请求包
    • 快速创建请求
    • 回放、管理请求
    • 快速设置网络代理


    Postman安装:
    • 1.在chrome应用商店搜索,应用商店地址:https://chrome.google.com/websto ... webstore.google.com
    • 翻墙下载直接添加成google浏览器插件即可
    • 2.客户端安装
    • https://www.getpostman.com/apps
    • 建议选择Mac/Windows app,比起Chrome app,下载不需要翻墙,功能更强大


    2、界面



    3、Postman简单使用

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

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



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

    appID wx55614004f367f8ca

    Appsecret 65515b46dd758dfdb09420bb7db2c67f

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

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

    页面访问请求(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持久化运行

    9、postman提取接口返回值

    1、变量赋值的方式

    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中通过全局变量实现

    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接口:

    B接口:

    失败的测试自动重新运行

    6、Postman调试功能(日志)

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

    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

    x
    分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
    收藏收藏
    回复

    使用道具 举报

    本版积分规则

    关闭

    站长推荐上一条 /1 下一条

    小黑屋|手机版|Archiver|51Testing软件测试网 ( 沪ICP备05003035号 关于我们

    GMT+8, 2024-11-14 15:09 , Processed in 0.064899 second(s), 24 queries .

    Powered by Discuz! X3.2

    © 2001-2024 Comsenz Inc.

    快速回复 返回顶部 返回列表