• 0
  • 0
分享

一、Postman介绍

Postman官网上这样介绍它:"Manage all of your organization's APIs in Postman, with the industry's most complete API development environment."看的出来Postman是功能强大的API测试的工具

Postman 提供功能强大的 Web API 和 HTTP 请求的调试,它能够发送任何类型的HTTP 请求 (GET, POST, PUT, DELETE...),并且能附带任何数量的参数和 Headers。不仅如此,它还提供测试数据和环境配置数据的导入导出,付费的 Post Cloud 用户还能够创建自己的 Team Library 用来团队协作式的测试,并能够将自己的测试收藏夹和用例数据分享给团队。

二、Postman下载及安装

Postman有2种安装方式,一种是作为Chrome的插件,另一种是客户端形式,建议使用客户端安装

1. Postman下载

官网下载地址:https://www.getpostman.com/downloads/

2. 安装过程

默认安装即可,安装完成后,注册登录

三、Postman功能视图

详细功能可以参考Postman官方 文档,

打开软件,就可以看到Postman主界面,如下图所示:

图1.png

1. Collections:在Postman中,Collection类似文件夹,可以把同一个项目的请求放在一个Collection里方便管理和分享,Collection里面也可以再建文件夹。如果做API文档的话,可以每个API对应一条请求,如果要把各种输入都测到的话,就需要每条测试一条请求了。

2. 上面的黑字注册是请求的名字,如果有Request description的话会显示在这下面。下面的蓝字是保存起来的请求结果,点击可以载入某次请求的参数和返回值。我会用这个功能给做客户端的同事展示不同情况下的各种返回值。保存请求的按钮在15.

3. 选择HTTP Method的地方,各种常见的不常见的非常全。

4. 请求URL,两层大括号表示这是一个环境变量,可以在16的位置选择当前的environment,环境变量就会被替换成该environment里variable的值。

5. 点击可以设置URL参数的key和value

6. 点击发送请求

7. 点击保存请求到Collection,如果要另存为的话,可以点击右边的下箭头

8. 设置鉴权参数,可以用OAuth之类的

9. 自定义HTTP Header,有些因为Chrome原因不能自定义的需要另外装一个插件Interceptor,在16上面一行的卫星那里

10. 设置Request body,13那里显示的就是body的内容

11. 在发起请求之前执行的脚本,例如request body里的那两个random变量,就是每次请求之前临时生成的。

12. 在收到response之后执行的测试,测试的结果会显示在17的位置

13. 有四种形式可以选择,form-data主要用于上传文件。x-www-form-urlencoded是表单常用的格式。raw可以用来上传JSON数据

14. 返回数据的格式,Pretty可以看到格式化后的JSON,Raw就是未经处理的数据,Preview可以预览HTML页面

15. 点击这里把请求保存到2的位置

16. 设置environment variables和global variables,点击右边的x可以快速查看当前的变量。

17. 测试执行的结果,一共几个测试,通过几个。

四、测试工具

测试工具主要包括三部分,在发起请求之前运行的Pre-request,在收到应答之后运行的Test,和一次运行所有请求的Collection Runner

1. Pre-request

预请求脚本是与在发送请求之前执行的收集请求相关联的代码片段。

图2.png

Pre-request和Test用的语言都是JavaScript,Postman在一个沙盒里执行代码,提供给用户的库和函数可以在这里查看。而常用的功能都可以通过右边的Code Snippets实现,点击就可以插入到代码区域。

2. Test

使用Postman,您可以使用JavaScript语言为每个请求编写和运行测试.

图3.png

测试例子

设置环境变量

pm.environment.set("variable_key", "variable_value");

获取环境变量

pm.environment.get("variable_key");

获取环境变量(其值是字符串化对象)

var array = JSON.parse(pm.environment.get("array"));
var obj = JSON.parse(pm.environment.get("obj"));

清除环境变量

pm.environment.unset("variable_key");

设置全局变量

pm.globals.set("variable_key", "variable_value");

获取全局变量

pm.globals.get("variable_key");

清除全局变量

pm.globals.unset("variable_key");

得到一个变量

此函数在全局变量和活动环境中搜索变量。

pm.variables.get("variable_key");

检查响应主体是否包含字符串

pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});

检查响应主体是否等于字符串

pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});

检查JSON值

pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
//var jsonData = JSON.parse(responseBody);
//tests["list"] = jsonData["lists"][0] == "11";

内容类型存在

pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type");
});

响应时间小于200毫秒

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

代码名称包含一个字符串

pm.test("Status code name has string", function () {
    pm.response.to.have.status("Created");
});

成功的POST请求状态代码

pm.test("Successful POST request", function () {
    pm.expect(pm.response.code).to.be.oneOf([201,202]);
});

将XML主体转换为JSON对象

var jsonObject = xml2Json(responseBody);

获取HTML并取出其中的值

//获取HTML
const $ = cheerio.load(responseBody);
//获取input标签中name属性值为SignValue的数据中属性为value的值
var signvalue=$('input[name=SignValue]').attr('value');
//
//获取textarea标签中name值为SignValue的数据中文本属性text的值
var signvalue=$('textarea[name=SignValue]').text();

3. Collection Runner

当编写了很多测试之后,就可以使用Collection Runner来自动运行整个Collection了,入口就在主界面最上面一行的Runner。选好Collection、Environment,如果有需要还可以载入JSON和CSV作为数据源。点击Start Run,就可以看到结果了。

图4.png

五、变化的参数

1. 使用变量

现在使用参数都是写死的, 那么如果想要测试账号密码参数使用其它值有没有异常怎么办呢?

这里就需要使用变量

引用变量的语法:{{变量名}}

Pre-request Script 和 Tests都可以设置变量,区别在于:Pre-request Script 中的脚本是在执行请求之前运行,而Tests 中的脚本则是在请求完成之后执行。

2. 测试数据集

在执行Collection Runner时可以选择CSV或json格式的文件作为测试数据集

CSV文件格式:

图5.png

JSON文件格式:

图6.png

在执行Collection Runner时使用CSV/JSON文件

图7.png

3. 定期任务

Postman 提供了一个 Monitors (监视器)功能,支持我们提交一个测试任务,按照设置的定时器进行运行,如每小时测试一次,具体操作如下:

图8.png

图9.png

六、接口依赖的问题

1. 接口执行顺序

首先,说明一下,接下来说的接口都是默认属于同一个集合 (Collections) 中的。

接口的执行顺序其实就是按照这边目录中的顺序(从上到下);所以有了这个默认的执行顺序后,那么我们便可以把需要优先执行的接口放前面即可,比如把“登录接口”放在第一个。

2. 自定义执行顺序

当然,如果只有默认的一个执行顺序的话,通常没法满足我们复杂的业务需求,所以 Postman 为我们提供了一个函数:postman.setNextRequest("填写你要跳转的接口名")

我们可以在接口的 Tests 功能区中执行跳转代码,如:

图10.png

图11.png

这里需要注意几点:

  • postman.setNextRequest() 只在运行集合测试的时候生效,也就是说我们单独运行 (Send) 接口 时,函数是不起作用的。

  • 当我们运行集合测试成功从 Request1 -> Request3 后,如果 Request3 后面还有接口,那么后面的接口仍然继续按默认顺序执行,即图中的接口 Request4 仍会被执行。

  • 指定的跳转接口必须属于同一个集合中。

  • setNextRequest() 函数不管在 Tests 脚本中何处被调用,它都只在当前脚本最后才被真正执行。比如我们将图中的第二行与第一行互调后,那么在运行跳转函数后第二行代码仍会被执行。

3. 解决依赖的思路

  • 保证 Request1 在 Request3 之前被运行

  • 将 Request1 返回的 access_token 的值添加到环境变量"参数集"中。

  • Request3 在请求时引用 access_token 的值


作者:张_威

原文链接:https://www.cnblogs.com/istart/p/11137797.html

  • 【留下美好印记】
    赞赏支持
登录 后发表评论
+ 关注

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   摘要:大家好,今天我们一起聊聊,在软件性能测试过程中如何编写性能测试用例,上一次推文介绍了如何进行性能测试的需求分析,在性能需求分析中已经确定了哪些接口或那些业务逻辑需要进行性能测试,那么在用例设计上就根据不同的接口及业务进行设计测试用例。  首先需要对每个接口进行压测,验证每个接口是否有明显的性能瓶颈。并需要把所有的单一接口全部优化完毕后,再做场景级别的性能测试。  一、单接口的性能测试用例  例如登录系统的登录接口:  二、多接口的业务场景性能测试用例  例如登录系统的登录后进行下载业务。  三、全流程业务场景性能测试用例  例如登录系统的登录后进行填表然后进行下载业务。  例如登录系...
            0 1 1584
            分享
          •   1. 场景  提到 Postman,大部分的人可能只停留在使用 Postman「 模拟网络请求 」这单一功能上面。  事实上,Postman 的功能很强大,下面将罗列出几个比较少用,但实用的功能。  2. 抓包及拦截器  除了 Fiddler 和 Charles,Postman 也可以用来抓包,而且使用更简洁方便。  Postman 只需要设置端口号,然后自定义过滤条件和请求保存位置,接着配置客户端手动代理,就能愉快地进行抓包了。  另外,Postman 中的拦截器,即:Interceptor,根据过滤条件,拦截 PC 端对应的网络请求,保存到左侧的请求历史记录中或请求集合下。 ...
            4 5 4169
            分享
          • 一、前言测试的面试相对于开发的面试来说,对于技术的询问其实相对来说较少的,主要针对以下几个方面。测试理论,接口,数据库,linux,自动化,性能、个人情况这几大块。二、常见问题1、软件测试理论基础①什么是软件测试?在规定条件下对程序进行操作,发现程序错误,衡量软件质量,并对其是否能满足设计要求进行评估的过程。②软件测试主要测试用例设计方法是什么?白盒测试:逻辑覆盖、循环覆盖、基本路径覆盖;黑盒测试:等价类、边界值、因果图、状态图法、错误猜测、测试大纲、随机测试、场景。③测试计划、方案以及测试报告主要包括哪些方面?测试计划主要包括:测试范围(功能性测试;非功能性测试);测试通过/失败的标准(通过...
            12 13 1853
            分享
          •   盲区预警(BSW blind spot detection)  通过车辆周围排布的传感器及盲点探测器,在超车、换道、大雾、雨天等易发生危险的情况下,通过后视镜以及仪表显示提醒驾驶员。当驾驶员开启该功能时,车速处于20-70km/h的行车工况下,未开启转向时,当同向车道有同速度车辆,进行后视镜显示报警信息,当开启转向时,增加仪表信息显示报警。  车道偏离预警(LDW lane departure warning)  当系统开启时,摄像头会时刻采集车道线,通过图像处理获取车辆的位置参数,当检测到车辆偏离汽车轨道时,传感器会及时手机车辆数据和驾驶员操作状态,发出警报,如果驾驶员打开转向灯,则不发...
            0 0 1400
            分享
      • 51testing软件测试圈微信