0


Postman


视频:https://www.bilibili.com/video/BV1h54y1L7kz?spm_id_from=333.337.search-card.all.click

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-3SCfH7mm-1666678980663)(assets/1650246824423.png)]

接口

概念

服务器和客户端(app,网页)之间有接口,完成两者之间的数据交互;

接口是数据交互的通道,完成数据的传递

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-SKDVVKZP-1666678980665)(assets/1650247146513.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OX0rHlkj-1666678980665)(assets/1650247250406.png)]

接口的类型

  1. 按协议分。协议不同,接口的类型不同。HTTP,TCP,UDP,IP,FTP,USB
  2. 按语言划分。C++,JAVA,Python等
  3. 按范围划分。系统之间和程序内部系统之间:- 内部系统之间:登录,支付,购物车等等子系统(内部系统)之间的访问交互- 外部部系统之间:(外部)支付,购物车等系统(内部系统)之间的访问交互。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CT3hApOL-1666678980665)(assets/1650247607966.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cG3G1A8H-1666678980666)(assets/1650247831111.png)]

程序之间:方法(函数)和方法(函数)之间。类和类之间。模块和模块之间。

# 使用接口defbird():
    something ='虫子'
    eat(something)# 接口defeat(something):# print(f'小鸟在吃{something} ' )print('小鸟在吃",something)
bird()

接口测试

概念

接口测试:是对系统或组件之间的接口进行测试,

主要是校验数据的交换、传递和控制管理过程(不能直接跳过前一个过程),以及相互逻辑依赖关系(在访问前须得有一个登录)。

测试系统或组件之间交互的数据的正确性,以及逻辑依赖关系的正确性!

原理

  • 数据(预期结果)从哪里来: - 根据用户需求
  • 如何校验: - 借助工具或代码,模拟客户端。组织数据

用工具或者代码模拟客户端,向服务器发送请求,校验服务器传回来的响应数据是否和预期的结果一致;

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oF9eWbs7-1666678980666)(assets/1650249142063.png)]

接口测试的特点

  • 测试可以提前介入,提早发现Bug,符合质量控制前移的理念-
  • 可以发现一些页面操作发现不了的问题(可以绕过前端页面的一些数据传递,跳过校验规则,直接向服务器发送请求):支付密码输入非数字,特殊字符
  • 接口测试低成本高效益(底层的一个Bug能够引发上层8个左右Bug,接口测试可以实现自动化)
  • 不同于传统的单元测试,接口测试是从用户的角度对系统进行全面的检测(各种“不听话”的用户)> 测试服务器的健壮性

接口测试的实现方式

  • 使用接口测试工具来实现(比如: JMeter、Postman、fiddler)
  • 通过编写代码来实现(比如: Python + Requests+UnitTest)
什么是自动化接口测试

利用工具代码,代替人工自动判断响应结果和预期结果是否一致,依赖断言

HTTP协议

协议:就是规则!要求使用协议的双方,必须严格遵守

  1. HTTP协议介绍HTTP:(HyperText Transfer Protocol)超文本传输协议,是一个基于请求与响应模式的、应用层的协议,也是互联网上应用最为广泛的一种网络协议。
  2. HTTP协议的特点- 支持客户端/服务器- 模式简单快速- 灵活- 无连接- 无状态TCP协议:C/S模型---->三次握手建立连接;—>四次挥手断开连接;各个点都有状态,会根据状态调整;而HTTP是无连接的,无状态的。

URL格式

URL:(Uniform Resource Locator)统一资源定位符,是互联网上标准资源的地址。

HTTP使用URL来建立连接和传输数据

语法格式

URL格式
http : //www.itcast.cn:8080/news/index.html?uid=123&page=1

  • 协议部分:“http",常见的协议有HTTP,HTTPS、FTP等
  • 域名部分:“www.itcast.cn”,也可以使用IP地址作为域名使用(定位网络环境中的一台主机)
  • 端口部分:“8080",端口可以省略,默认端口(HTTP:80,HTTPS:443(加密),FTP:21)mysql: 3306****redis: 6379在网络主机上定位不同的应用
  • ·资源路径部分:“/news/index.html";对应网页的原代码或者网络中的一个数据资源- 资源路径可以为空(没有),相当于资源路径为“/”- 如有查询参数,资源路径为?之前域名(端口)之后的所有内容!- 如果没有查询参数,资源路径,从域名(端口)之后,直到结束。
  • 查询参数部分:“uid=123&page=1",可以允许有多个参数,多个之间用“&"作为分隔符传参给网页源代码- 以?与资源路径隔分- 查询参数可以有多个,之间用&隔分- 参数参数的语法k=v对儿!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-AqIFI796-1666678980667)(assets/1650252187013.png)]

示例
查询天气信息 :http://www.weather.com.cn/data/sk/101010100.html

Http请求

作用:

  • 由客户端发送给服务器
  • 规定了 发送给服务器 的 数据的 语法格式

HTTP请求由四部分组成:请求行,请求头,空行,请求体

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-Mtk9ww5I-1666678980667)(assets/1650253203942.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-zUAgB6xg-1666678980667)(assets/1650253246614.png)]

换行符:\r\n

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-pkA6oMRc-1666678980668)(assets/1650590520855.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-1SiZRxnG-1666678980668)(assets/1650590671905.png)]

请求行

  • 作用:指定请求方法、请求资源
  • 语法格式:请求方法(空格)URL(空格)协议版本(lrln)请求方法: - GET:查询。—―没有请求体- POST:新增。――登录、注册主要使用。有请求体- PUT:修改。――有请求体。- DELETE:删除。—―没有请求体
  • URL:数据资源的定位符
  • 协议://域名:端口/资源路径?查询参数&查询参数&…
  • 协议版本: - http1.1/http1.2/http2.0

请求头

  • 作用:向服务器描述客户端(浏览器)的基本信息
  • 语法:k:v 键值对儿
  • User-Agent:向服务器描述浏览器的类型(防爬虫)
  • Content-Type:向服务器描述请求体的数据类型- application/x-www-form-urlencoded(表单数据类型)

请求体

  • GET、DELETE请求方法,没有请求体。
  • POST、PUT请求方法,有请求体。
  • 请求体的数据类型,受请求头中Content-Type的值影响

Http响应

作用:

  • 由服务器 回 发送给客户端
  • 规定了 服务器 回 发送给客户端 的 数据的 语法格式

整体格式

  • 响应行(状态行)、响应头、空行、响应体

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RCGwwRUw-1666678980668)(assets/1650593073078.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-WPUKbM70-1666678980669)(assets/1650593165728.png)]

响应包或响应报文

状态行

  • 语法格式:协议版本(空格)状态码(空格)状态码描述\rln
  • 协议版本: http1.0/http1.1/http2.0
  • 状态码:针对Http请求,响应的状态 - 状态码描述

详细可以参考Http协议中文版文档

状态码有三位数字组成,第一个数字定义了响应的类别:·

1xx:指示信息–表示请求已接收,继续处理(表示请求需要进一步访问)

2xx:成功–表示请求已被成功接收、理解、接受(200:OK

3xx:重定向–要完成请求必须进行更进一步的操作

4xx:客户端错误–请求有语法错误或请求无法实现(404:没有找到文件;403:资源无权访问)

5xx:服务器端错误–服务器未能实现合法的请求(502:badgateway;504:响应时间太长)

  • 状态描述:对状态码的描述

响应头

  • 作用:向客户端描述服务器的基本信息。
  • 语法:k:v键值对儿
  • Content-Type:向客户端描述 **响应体 **的数据类型!

响应体

  • http响应报文,大多数是有响应体
  • 响应体的数据类型,受 响应头中 ContentIType 的值影响。 - json 类型- 表单 类型- 图片 类型

传统风格的接口

对用户进行操作的相关接口,包括增删改查

  • 使用GET、POST 实现所有数据的增删改查操作。
  • 针对用户的某一个操作,URL不唯一。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-oGDic4xp-1666678980669)(assets/1650595084080.png)]

好处:

  1. 对开发的技术要求低。只需要掌握get、post即可
  2. 代码灵活

RESTful

一种软件架构风格、设计风格,而不是标准,只是提供了一组设计原则和约束条件

REST:即(Representational StateTransfer)的缩写。词组的翻译是“表现层状态转化”。如果一个架构符合REST原则,就称它为RESTful架构。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CwDjMpjO-1666678980669)(assets/1650595758022.png)]

  • 使用GET/POST/PUT/DELETE分别表示查、增、改、删使
  • 用一个URL对应一个唯一的资源。
  • 状态码,根据实际操作请求加以区分。(但实际开发中,会直接返回一个同意的状态码,然后在响应体中添加一个字段,去描述返回的结果)

界定RESTful风格接口:

  1. 请求方法 使用get\post\delete\put对应查增删改
  2. 数据资源定位符是否唯一
  3. 在URL中不使用动词,替换使用名词,结合请求方法,界定具体操作。

RESTful没有强制性,只是一种风格;接口之间传递的数据最常用格式为JSON


接口测试流程

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-XFPVSe3V-1666678980669)(assets/1650597072184.png)]

  1. 需求分析- 主要依据需求文档
  2. 接口文档解析- 一般是由开发人员编写接口文档(API文档)
  3. 设计测试用例
  4. 执行测试- 使用接口测试工具实现。通过编写代码实现
  5. 接口缺陷管理 与 跟踪(回归测试)
  6. 生成测试报告
  7. 接口自动化持续集成(可选)

接口文档

什么是接口文档?

也叫API文档。是由开发人员编写。描述接口相关信息的文档。

作用:

  1. 方便前端开发人员和后端开发人员,在开发时进行对接。
  2. 在人员更迭时,方便新入职的员工快速接手项目。
  3. 方便测试人员编写接口测试用例。

展现形式

  • 在线文档(html)
  • 离线文档 - wordo- xmind- pfd- Excel

接口文档结构

  • 基本信息:接口描述:URL:(协议+域名)+资源路径。请求方法
  • 请求参数:- 请求头- 请求体(GET、DELETE没有)
  • 返回结果:- 状态码、状态描述- 响应体

登录接口为例:

http请求:

  • 请求行请求方法:POSTURL: http:/lihrm-test.itheima.net/api/sys/login协议版本:默认 http/1.1
  • 请求头:Content-Type:application/json
  • 请求体:{“mobile”:“13800000002",“password”:“123456”}> json里面不能用单引号表字符串

http应答:

  • 响应行:状态码、状态描述:200 ok
  • 响应头: 无

所有接口文档里面的内容,复制过去。

  • 响应体: - 第一种情况:“success”:true,“code”:10000,"message"∵"操作成功! ", “data”.“xxx”}- 第二种情况:{“success”:false,“code”:20001 ," message":“用户名或密码错误” ," data":null}- 第三种情况:{“success”.false,“code”:99999,"message"∵"抱歉,系统繁忙,请稍后重试! ",“data”:null}

接口用例设计

为什么写?

  1. 防止漏测
  2. 管理工作进度,评估工作量

接口测试的用例点(测试维度)

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-u6PKTnWw-1666678980670)(assets/1650679684076.png)]

####功能测试

  • 单接口功能:手工测试中每个业务功能。在接口测试中就对应唯一的一个接口。针对该接口展开测试。
  • 业务场景功能:(一定是在单接口测试之后)对应手工测试中,有业务流程。就是接口的调用先后顺序。按调用顺序展开接口测试

性能测试

  • 响应时长:- 从发出请求,到服务器回发响应,所经历的时长。
  • 吞吐量:- TPS(单位时间事务数)。如1s内,接口所能处理的请求数量
  • 并发数:- 同一时间,同时向服务器的接口发送请求,所能正确处理的数量。
  • 服务器资源利用率:- 接口工作中,服务器硬件资源使用占比情况。

安全测试

  • 敏感数据密码,身份证号,银行卡号…
  • SQL注入在用户能够输入的位置,写SQL语句,看是否能够得到数据库查询的结果

设计方法和思路

与手工设计相同之处
接口用例设计的测试点,与手工页面业务功能的测试点几乎完全一样。

手工功能用例设计要点:

  1. 测试页面布局、控件的位置是否精准
  2. 针对用户名的编辑框中的数据值,展开测试正确手机号、手机号有特殊字符、手机号不足11位、手机号超11位、手机号为空…
  3. 针对密码的编辑框中的数据值,展开测试正确密码、错误密码、密码有特殊字符、密码1位、密码100位、密码为空…
  4. 针对验证码的编辑框中的数据值,展开测试 正确验证码、错误验证码、过期验证码、验证码为空…

接口用例设计要点:

  1. 手工页面中的用户名编辑框的值,对应接口中key为username的 value值。针对username的值展开测试。 正确手机号、手机号有特殊字符、手机号不足11位、手机号超11位、手机号为空...
  2. 手工页面中的密码编辑框的值,对应接口中 key为password 的value值。针对 password的value值展开测试。 正确密码、错误密码、密码有特殊字符、密码1位、密码100位、密码为空....
  3. 手工页面中的验证码编辑框的值,对应接口中key为verify_code value值。针对 verify_code的value值展开测试。 正确验证码、错误验证码、过期验证码、验证码为空...

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-b8ZUXrAq-1666678980670)(assets/1650684493968.png)]

单接口测试用例

8大要素:编号,标题,项目描述,优先级,预置条件,测试数据、执行步骤 ,预期结果

接口测试用例:
编号、标题、用例名称、优先级、预置条件、接口名称、请求方法、URL、请求头、请求体(请求数据)、预期结果

登录测试点

  • 数值正向:登录成功
  • 数据反向:- 手机号为空- 手机号有特殊字符。- 手机号不足11位。- 手机号超出11位。- 手机号未注册。- 密码错误。- 密码为空- 密码有特殊字符- 密码1位- 密码100位
  • 参数正向:必选参数(全部参数)
  • 参数反向:多参,少参,无参

业务场景测试用例

分析测试点:

  • 业务场景尽量遵循用户实际使用的场景,按顺序调用接口进行测试
  • 尽量使用最少的测试用例覆盖最多的业务场景
  • 单接口已经测完:一般情况下只需要 测试正向的 业务场景即可

登录成功–添加员工–查询–修改–查询–删除–查询员工列表

依赖关系:

  1. 登录成功返回的“令牌”,被添加、查询、修改、删除依赖。
  2. 添加员工成功,返回员工id,被查询、修改、删除依赖。

添加员工

18795963214

查询员工

修改员工

删除员工

查询员工列表

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-sosXsyPN-1666678980670)(assets/1650700658766.png)]

Postman实现接口测试

掌握如何安装Postman

掌握Postman的基本用法

掌握全局变量与环境变量

掌握Postman断言和关联

掌握如l何读取外部文件实现参数化

掌握如l何使用Newman生成HTML测试报告


1. Postman介绍

Postman是一款非常流行的接口调试工具,它使用简单,而且功能也很强大。不仅测试人员会使用,开发人员也会经常使用。
官方网站: https://www.getpostman.com/
主要特点

  1. 简单易用的图形用户界面
  2. 可以保存接口请求的历史记录
  3. 使用测试集Collections可以更有效的管理组织接口
  4. 可以在团队之间同步接口数据

2.Postman安装

安装注意事项

一旦安装成功,尽量坚持使用不要卸载!
Postman有个BUG,不能重复安装,如果重复安装,新安装的版本必须大于已安装的版本。

安装插件:newman

安装教程

https://blog.51cto.com/u_15127674/4283756

https://blog.csdn.net/weixin_41990913/article/details/117664715?ops_request_misc=%257B%2522request%255Fid%2522%253A%2522165070122116781435470736%2522%252C%2522scm%2522%253A%252220140713.130102334…%2522%257D&request_id=165070122116781435470736&biz_id=0&utm_medium=distribute.pc_search_result.none-task-blog-2allsobaiduend~default-1-117664715.142v9control,157v4control&utm_term=postman%E5%AE%89%E8%A3%85newman&spm=1018.2226.3001.4187

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-4NWRD0Pi-1666678980670)(assets/1650701782606.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-821z4bx6-1666678980671)(assets/1650702099084.png)]

3. Postman基础使用

案例一:Get搜索请求

使用postman发送http请求,访问tpshop商城的“搜索"接口

商城地址:tpshop-test.itheima.net/

> [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-h3qLzuFN-1666678980671)(assets/1650702625357.png)]

postman进入my workspaces

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ZgoeOTno-1666678980671)(assets/1650702797865.png)]

URL中不能出现汉字,只能用ascll码的形式表示,可以用unicode编码解码

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yW248EjD-1666678980671)(assets/1650704033372.png)]
:点击Send

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-s0i10eaL-1666678980671)(assets/1650704343517.png)]

1.借助浏览器开发者工具(或者Fiddler)获取搜索接口使用请求方法、URL

  1. 请求方法: GET
  2. URL:https://search.jd.com/Search?keyword=%E6%89%8B%E6%9C%BA&enc=utf-8&pvid=f43a375b423243cfb1532ebb025d240e
    ⒉. 使用Postman 创建一个标签页(tab),组织http请求,发送搜索接口请求

案例二:Post登录请求

使用Postman向topshop商城登录接口发送一个密码错误的登录请求

获取数据:

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-MlWO5L3m-1666678980672)(assets/1650705241485.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-OJ22XM2h-1666678980672)(assets/1650705263739.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-aM4w1yDc-1666678980672)(assets/1650705294837.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-lHYpnCN4-1666678980672)(assets/1650705220973.png)]

案例三:iHRM的登录请求

从接口文档,获取登录接口的http请求,使用Postman发送请求给iHRM人力资源管理系统

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-V9iec45W-1666678980672)(assets/1650705632021.png)]

4. Postman的高级用法

管理测试用例集

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-cpvubzkO-1666678980673)(assets/1650763791415.png)]

用例集导入导出

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5VKbGSJZ-1666678980673)(assets/1650763917536.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-9lPPCPC7-1666678980673)(assets/1650763941269.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5RwLFYxP-1666678980673)(assets/1650763973523.png)]

导入

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-yaixGrxE-1666678980674)(assets/1650764049129.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-CRlaciHL-1666678980674)(assets/1650764090265.png)]


Postman断言

断言:让程序判断预期结果和实际结果是否一致。

特点

  1. Postman的断言是使用JavaScript语言编写的,写在**'Tests’标签页**里
  2. Tests中的脚本在发送请求之后执行,会把断言的结果(PASS/FAIL)最终在’Test Results’标签页中展示

常用Postman断言

断言代码片段介绍

  1. Status code: Code is 200
//判断响应状态码是否等于200//断言响应状态码为200
pm.test("Status code is 200",function(){
    pm.response.to.have.status(200);});
pm: Postman的一个实例
test: Postman实例的一个方法,有两个参数:
参数1:"Status code is 200"”断言完成后,给出的提示信息. 
参数2:匿名函数调用。
 pm.response.to.have.status(200);的意思是postman的响应结果中,有状态码 200

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jSZgNFIZ-1666678980674)(assets/1650765553451.png)]

  1. Response body: Contains string
//判断响应体中是否包含指定的字符串
pm.test("Body matches string",function(){
    pm.expect(pm.response.text()).to.include("string_you_want_to_search");});
pm : Postman的一个实例
test(): Pos tman实例的一个方法,有两个参数:
参数1:"Body matches string"断言完成后,给出的提示信息。
参数2。匿名函数调用。
pm.expect(pm.response.text()).to.include("string_you_want_to_search");
意思是:postman实例预期结果中包含 "string_you_want_to_search" 字符串
"string_you_want_to_search": 是预期结果!

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-apkcp65j-1666678980674)(assets/1650766222897.png)]

数值也可以正常判断

  1. Response body: ls equal to a string
//断言响应体等于某个字符串(对象)
pm.test("断言响应体等于某个字符串(对象)",function(){
    pm.response.to.have.body("response_body_string");});
pm.response.to.have.body("response_body_string")意思:
postman 的响应结果中有响应体为"response_body_string""response_body_string" 是预期结果

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-jQkfZhIT-1666678980674)(assets/1650767389166.png)]

  1. Response body: JSON value check
//校验响应的JSON数据
   pm.test("our test name",function(){var jsonData = pm.response.json();
         pm.expect(jsonData.value).to.eql(100);});var jsonData = pm. response.json();意思是:
定义一个变量,名称叫jsonData ,值为:json格式的响应体数据pm.expect(jsonData.value).to.eq1(100);意思是:postman预期json格式的响应结果中xxx(key)的值为 xxx

value可以替换为:success. code、 message.data
to.eq1() 中的值对应为, true、10000、"操作成功! "、“fe565654-7540-4c64-9949-3d4bf5ad03a4”

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-UNIUNqCs-1666678980675)(assets/1650768224305.png)]

  1. Response headers: Content-Type header check//判断响应头中是否包含指定的头标签 pm.test("Content-Type is present",function(){ pm.response.to.have.header("Content-Type");}); pm.response.to.have.header("Content-Type"):postman中的响应头中有Content-Type[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ILKkwjpd-1666678980675)(assets/1650768559542.png)]

注意变化的值就不要去断言了

断言的工作原理

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-tVbPDwgK-1666678980675)(assets/1650769071023.png)]

全局变量和环境变量

全局指整个Postman内部

全局变量:全局变量是全局唯一的,不可重复定义的变量

环境变量:

  • 一个变量只能属于某个环境,在某一个环境中变量不可重复定义。
  • 在环境与环境之间可以定义重复的变量
  • 一个环境可以包含多个环境变量
  • 常见环境分类:开发环境、测试环境、生产环境> 概念:在特定环境下生效的变量。Postman中可以有多个环境,每个环境中的变量名可以重复。同一个环境中的变量唯一。常见环境:测试环境、开发环境、生产环境

设置变量

  • 全局变量1. 手动设置2. 代码设置:pm.globals.set(“var_name”, value);
  • 环境变量1. 手动设置2. 代码设置:pm.environment.set(“var_name”, value);

获取变量值

  • 全局变量 1. 请求参数中获取:{{var_name}}:直接在界面上用2. 代码中获取:var value = pm.globals.get("var_name" );
语法:pm.globals.set("全局变量名",全局变量值)
例子:var age_tmp =18//定义js语法的变量
pm. globa1s.set("glb_age ",age_tmp)

语法:var接收变量名 = pm.globals.get("全局变量名")
例子:var ret_age = pm.globa1s.get("glb_age")
  • 环境变量 1. 请求参数中获取: {{var_name}}2. 代码中获取:var value = pm.environment.get("var_name");
语法:pm.environment.set("环境变量名",环境变量值)
例子:
语法:pm.environment.set("环境变量名",环境变量值)
例子:var age_tmp =19//定义js语法的变量
pm.environment.set("env_age ",age_tmp)
Var age_tmp=19//定义js语法的变量
pm.Environment.set(“env_age”,age_tmp)

语法:var接收变量名 = pm.environment.get("环境变量名")例子:var ret_age = p . environment.get("env_age")

Postman请求前置脚本

假设,这样一种场景:

调某接口时,要输入""时间戳”,如果输入的“时间戳"的绝对值,超过标准时间10分钟。则不允许调用。

1970年1月1日,00:00:00~现在秒数

假设,这样一种场景:
调某接口时,要输入"时间戳",如果输入的“时间戳”的绝对值,超过标准时间10分钟。则不允许调用。

概念

  • 时间戳:表示当前系统时间。表示方式:从1970年1月1日00:00:00~现在所经历的秒数。
  • 请求前置脚本: - 书写在“Pre-request Script”标签中- Postman在 http请求发送之前,会自动执行,该脚本中的代码!

案例

调用百度首页接口,传时间戳给服务器

  1. 创建“请求前置脚本”用例集和http请页。
  2. 指定请求方法GET,URL: http://www.baidu.com
  3. 在Pre-request Script标签页中,写入代码,获取时间戳,写入到全局变量中//获取 时间戳var timestamp =newDate().getTime()//将时间戳保存到全局变量中pm.globals.set("gbl_timestamp",timestamp)
  4. 点击Send按钮,促使 Pre-request Script标签页中被自动执行。点击右上角的“眼睛"图标查看Globals中,多出一个全局变量。
  5. 在 URL中,借助查询参数,使用全局变量。 {{glb_timestamp}} 点击Send按钮,发送带有时间翟戳的请求。
  6. 查看,在Postman 菜单栏中“view" --> Show Postman Console 中查看

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-NAAxNO3H-1666678980675)(assets/1650849639869.png)]


5. Postman的关联

介绍:

  • Postman中的关联,用来解决接口和接口之前调用 依赖关系,需要借助全局变量和环境变量解决> 当请求之间有依赖关系,比如一个请求的入参是另一个请求返回的数据,这时候就需要用到关联处理。

实现步骤

以A接口返回的数据,供B接口使用为例:

  1. 组织A接口http请求数据,发送A接口请求。
  2. 获取A接口返回的响应数据,写入全局、环境变量中
  3. 组织B接http请求,从全局、环境变量中获取A返回的数据。|

案例

请求获取天气接口,提取响应结果中的城市,将城市名,给百度搜索接口使用。

  1. 请求获取天气的接口,http://www.weather.com.cn/data/sk/101010100.html
  2. 获取返回结果中的城市名称
  3. 调用百度搜索接口: http:/ /rw.baidu.com/s?wd=北京,把获取到的城市名称作为请求参数

实现步骤

  1. 创建“Postman关联”用例集和http请页 (2个)。
  2. 组织A接口请求方法、URL,发送 http请求。
  3. 获取响应结果中的json数据,从数据中提取城市名,保存到全局变量。
//获取响应数据var jsonData = pm.response.json();//获取城市名var city=jsonData.weatherinfo.city;//写入全局变量
pm.globals.set("glb_city",city);
  1. 点击Postman右上角“眼睛”图标,查看添加的全局变量是否正确!
  2. 组织B接口请求方法、URL,发送http请求。
  3. 在B接口的查询参数中,指定使用全局变量{{glb_city}}
http://www.baidu.com/s?wd={{glb_city}}

7.查看,在Postman菜单栏中“view" --> Show Postman Console 中查看

6. 批量执行测试用例

生成测试报告的前置条件

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-5sAvgW36-1666678980676)(assets/1650852096716.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-RSA0JkXs-1666678980676)(assets/1650851946303.png)]

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ozt54bzL-1666678980676)(assets/1650852052735.png)]

7. Postman生成测试报告

需要安装插件Newman插件

使用newman命令,运行导出的测试集脚本,打开cmd输入:
newman run 测试脚本文件 -e 环境变量文件 -d 测试数据文件 -r html --reporter-html-export report.html
eg:
newman run demo.postman_collection.json -r html
newman run demo.postman_collection.json -r html --reporter-html-export report.html

-e 环境变量文件 -d 测试数据文件是可选参数

【强调】﹔如果添加“-r htm1”参数之后,执行命令报错!是由于没有安装 newman-reporter-html

命令说明

  • run xxx.json:表示要执行的postman脚本,即导出的测试集数据.
  • -e source:用来指定环境变量文件的路径
  • -d source:用来指定测试数据文件的路径

生成报告步骤;

  1. 导出用例集(建议,创建空目录存储用例集。不建议目录层级过烈)
  2. 在用例集所在目录,地址栏输入cmd打开终端。
  3. 键入命令,生成测试报告
newman run Postman的断言用例集.postman_collection.json -r html --reporter-html-export 我的报告.html

city}}

http://www.baidu.com/s?wd={{glb_city}}

7.查看,在Postman菜单栏中“view" --> Show Postman Console 中查看

6. 批量执行测试用例

生成测试报告的前置条件

[外链图片转存中...(img-5sAvgW36-1666678980676)]

[外链图片转存中...(img-RSA0JkXs-1666678980676)]

7. Postman生成测试报告

需要安装插件Newman插件

使用newman命令,运行导出的测试集脚本,打开cmd输入:
newman run 测试脚本文件 -e 环境变量文件 -d 测试数据文件 -r html --reporter-html-export report.html
eg:
newman run demo.postman_collection.json -r html
newman run demo.postman_collection.json -r html --reporter-html-export report.html

-e 环境变量文件 -d 测试数据文件是可选参数

【强调】﹔如果添加“-r htm1”参数之后,执行命令报错!是由于没有安装 newman-reporter-html

命令说明

  • run xxx.json:表示要执行的postman脚本,即导出的测试集数据.
  • -e source:用来指定环境变量文件的路径
  • -d source:用来指定测试数据文件的路径

生成报告步骤;

  1. 导出用例集(建议,创建空目录存储用例集。不建议目录层级过烈)
  2. 在用例集所在目录,地址栏输入cmd打开终端。
  3. 键入命令,生成测试报告
newman run Postman的断言用例集.postman_collection.json -r html --reporter-html-export 我的报告.html

本文转载自: https://blog.csdn.net/sinian_sinian/article/details/127512665
版权归原作者 sinian_四年 所有, 如有侵权,请联系我们删除。

“Postman”的评论:

还没有评论