• 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

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

热门文章

    最新讲堂

      • 推荐阅读
      • 换一换
          •   一、软件的生命周期  软件计划与可行性研究(问题定义、可行性研究);需求分析;软件设计(概要设计、详细设计);编码;软件测试;运行与维护。  生存周期划分  各阶段的任务彼此间尽可能相对独立,同一个阶段各项任务的性质尽可能相同,从而降低每个阶段任务的复杂性,简化不同阶段之间的联系,有利于软件开发过程的组织管理。  生存周期基线功能基线(functional baseline)  功能基线是指在系统分析与软件定义阶段结束时,经过正式评审和批准的系统设计规格说明书中对待软件生命周期开发系统的规格说明;或是指经过项目委托单位和项目承办单位双方签字同意的协议书或合同中所规定的对待开发软件系统的规格...
            2 2 1616
            分享
          •   CNMO从外媒了解到,印度新德里将在2024年底前实施价值约1400亿卢比(折合人民币约120亿)的人工智能交通系统。该系统可以监测道路上的车流量、平均车速、停车时间等信息,除此之外,还将根据新德里的面积和地形,实时预测可能会出现的拥堵情况,以减少此类事情发生。  据外媒给出的数据,与世界上其他城市的驾驶员相比,新德里的驾驶员在交通上花费的时间大约多58%,因此新德里决定实施由AI驱动的交通管理系统(ITMS)。报道称,在印度第七届道路安全会议上,交通警察特别专员SurenderSinghYadav提到,智能交通管理系统(ITMS)还需要一年或一年半的时间才能全面实施,目前已耗资约140亿...
            0 0 513
            分享
          •   对于软件测试人员来说,测试技能的提升是一个持续的过程。从入门到精通,需要不断的学习技能、实践操作和总结经验,可能还免不了会走一些弯路。除此之外,掌握必要的学习方法也是很重要的一点,可以很大程度的避免做一些无用功,达到事半功倍的效果。  关于测试人员如何提升自己的测试技能,笔者特地总结了以下一些建议,希望对大家有所帮助!  1、多换位思考,学会去站在客户的角度思考问题  在测试的过程中学会从用户的角度去审视测试工作,培养自己对用户需求的共鸣。和用户沟通并且观察他们怎们样使用你的软件。从用户的角度去考虑问题,从小白的角度去使用,用专家的态度去更改。  2、多读Bug  平时多与同事沟通,抽出部...
            0 0 616
            分享
          • 如图多个元素的xpath路径是一样的,如何依次点击每个元素呢?//div[@class='item__10RTO']需要用find_element函数,用By进行定位。获取到的是一个list然后用for循环对list进行遍历需要注意的是find_elements是不能直接使用click()函数的,遍历时才能用click()from selenium.webdriver.common.by import Byjob_list=driver.find_elements(By.XPATH, ("//div[@class='it...
            0 0 794
            分享
          • 成熟的沟通技巧对于软件测试工程师在竞争激烈的软件测试领域中发挥作用至关重要。虽然软件测试职业需要编程技术和业务能力等硬技能,但优秀的测试人员是全面的,并且掌握了人际沟通的艺术。能够有效在团队以及与外部进行交流的测试人员通常会让团队更容易成功。沟通不畅可能导致缺陷与错误编码一样昂贵)。沟通不畅不仅会导致缺陷,还会导致相互指责、关系降低和项目延迟。要使软件测试人员取得成功,必须掌握沟通技巧,尤其是积极倾听、非语言沟通和压力管理。积极倾听人们无法沟通的原因有很多,但一个糟糕的倾听者是最令人沮丧的一种。糟糕的倾听者试图终止他人的发言,在他们说完之前做出回应,或者试图在谈话中保持主导地位。但是这非常不重...
            0 0 1413
            分享
      • 51testing软件测试圈微信