Postman进阶使用

3.Postman进阶

3.1 批量执行接口

当我们在一个Collection中编写了很多的接口测试用例,想一起执行这批用例,在postman中是如何操作呢 ?

实现步骤:

  1. 选中一个想要执行的项目集合

在这里插入图片描述

  1. 这时会弹出一个叫Collection Runner的界面,默认会把Collection中的所有用例选中

在这里插入图片描述

  1. 点击界面下方的RUN ,就会对集合中选中的所有测试用例运行

在这里插入图片描述

对上面的几个功能进行简单说明:

  • 断言统计:上面 passed/failed 是统计当前Collection中断言成功的执行数和失败的执行数,如果没有编写断言默认都为0 。
  • view Summary: 运行结果总览,点击它可以看到每个请求中具体的测试断言详细信息 。Export Result:导出运行结果,默认导出的结果json文件 。
  • Run Again: 重新运行,点击它会把该集合重新运行一遍
  • New:返回到Runner,可以重新选择用例的组合 。

总体来说,这个功能主要是用于对一个Collection中的所有用例或部分用例进行批量运行,已达到手工回归测试的目的。

3.2 变量

变量可以使我们在请求或脚本中存储和重复使用其值,通过将值保存在变量中,可以在集合,环境或请求中引用。

对我们做接口测试来说,又是一个非常重要的功能 。

在postman常用的三种变量分别是全局变量,环境变量,集合变量 。

  • 全局变量:一旦申明了全局变量,全局有效,也就是说postman中的任何集合,任何请求中都可以使用这个变量。它的作用域是最大的 。
  • 环境变量:要申明环境变量,首先的创建环境,然后在环境中才能创建变量 。如果要想使用环境变量,必须先选择(导入)这个环境,这样就可以使用这个环境下的变量了 。需要说明的是环境也可以创建多个 。每个环境下又可以有多个变量 。
  • 集合变量:集合变量是针对集合的,也就是说申明的变量必须基于某个集合,它的使用范围也只是针对这个集合有效 。

想要使用变量中的值只需俩个步骤,分别是定义变量和获取变量 。

3.21 定义变量

定义全局变量和环境变量,点击右上角的小眼睛,弹出如下界面,就可以根据需求定义全局变量或者环境变量了。

在这里插入图片描述

已经定义的全局变量和环境变量,可以进行快速查看

在这里插入图片描述

定义集合变量

选中某个集合,在集合界面Variables进行集合变量设置

在这里插入图片描述

3.22 调用变量

定义好变量,接下来就可以使用变量了 。需要注意的是,在不同的位置获取变量,编写的规则也是不一样的 。

如果在请求参数中获取变量,无论是获取全局变量,还是环境变量,还是集合变量,获取的方式都是一样的编写规则:{{变量名}} 。

请求参数指的是:URL,Params , Authorization , Headers , Body

在这里插入图片描述

如果是在编写代码的位置(Tests,Pre-requests Script)获取变量,获取不同类型的变量,编写的代码都不相同,具体如下:

  • 获取环境变量:pm.environment.get(‘变量名’)
  • 获取全局变量:pm.globals.get(‘变量名’)
  • 获取集合变量:pm.Variables.get(‘变量名’)
3.3 读取文件进行参数化

测试过程中,常会遇到一个接口要验证很多的测试数据,而输入参数又都是一样的。这时我们首先就会想到数据参数化(数据驱动),在postman中也提供了数据参数化功能,它需要把数据单独的存放在一个文件中管理,然后通过读取这个文件实现所有的数据的验证。

**实现步骤 **

在本地电脑创建数据文件,支持数据格式文件分别为csv和json 。在文件中分别包括参数名和数据

其中,在postman中需要读取外部文件的参数名,通过参数名来获取文件中的数据;

其中在不同的位置读取方式不同:

在URL输入框,Params,Authorization,Headers,Body中读取数据方式为:{{参数名}}。

在Pre-request Script和Tests中读取数据方式为:data.参数名

通过Runner-Data读取数据文件来运行。

案例

调用新增区域接口,新增多个区域信息

  1. 编写数据文件

    csv数据格式如下:首行为变量名

在这里插入图片描述

json数据格式如下:

在这里插入图片描述

  1. 编写请求,引用变量areaName,priority

在这里插入图片描述

  1. run执行当前模块并导入数据

在这里插入图片描述

  1. 查询运行结果

在这里插入图片描述

3.4 断言

如果没有断言,我们只能做接口的功能测试,但有了断言后,就为我们做自动化提供了条件,并且在postman中的断言是非常方便和强大的 。

我们先来了解下postman断言的一些特点 ,具体如下

  • 断言编写位置:Tests标签
  • 断言所用语言:JavaScript
  • 断言执行顺序:在响应体数据返回后执行 。
  • 断言执行结果查看:Test Results

在上面我们介绍到,编写的断言代码是JavaScript,那如果不会写怎么办 ?不用担心,因为postman已经给我们内置了一些常用的断言 。用的时候,只需从右侧点击其中一个断言,就会在文本框中自动生成对应断言代码块 。

在这里插入图片描述

接下来就让我们了解一些常用断言,还是按响应的组成来划分,分别是状态行,响应头,响应体

状态行中的断言

  • 断言状态码:Status code: code is 200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200); //这里填写的200是预期结果,实际结果是请求返回结果
});
  • 断言状态消息:Status code:code name has string
pm.test("Status code name has string", function () {
    pm.response.to.have.status("OK"); //断言响应状态消息包含OK
});

响应头中的断言

  • 断言响应头中包含:Response headers:Content-Type header check
pm.test("Content-Type is present", function () {
    pm.response.to.have.header("Content-Type"); //断言响应头存在"Content-Type"
});

断言响应体(重点)

  • 断言响应体中包含XXX字符串:Response body:Contains string
pm.test("Body matches string", function () {
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");
});
//注解
pm.expect(pm.response.text()).to.include("string") 获取响应文本中包含string
  • 断言响应体等于XXX字符串:Response body : is equal to a string
pm.test("Body is correct", function () {
    pm.response.to.have.body("response_body_string");
});
//注解
pm.response.to.have.body("response_body_string"); 获取响应体等于response_body_string
  • 断言响应体(json)中某个键名对应的值:Response body : JSON value check
pm.test("Your test name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.value).to.eql(100);
});
//注解
var jsonData = pm.response.json() 获取响应体,以json显示,赋值给jsonData .注意:该响应体必须返会是的json,否则会报错
pm.expect(jsonData.value).to.eql(100) 获取jsonData中键名为value的值,然后和100进行比较

响应时间(一般用于性能测试)

  • 断言响应时间:Response time is less than 200ms
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200); //断言响应时间<200ms
});
3.5 关联

在我们测试的接口中,经常出现这种情况 。上一个接口的返回数据是下一个接口的输入参数 ,那么这俩个接口就产生了关联。这种关联在做接口测试时非常常见,那么在postman中,如何实现这种关联关系呢 ?

实现方案:

  1. 在Tests中提取上一个接口的返回数据值,
  2. 将这个数据值保存到环境变量或全局变量中
  3. 在下一个接口进行引用

需求:访问京东 (请求A), 提取页面源码中的 title 标签, 传递给百度搜索 (请求B)

请求一:

在这里插入图片描述

请求二:

在这里插入图片描述

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值