使用Postman进行自动化集成测试

1 前言

笔者在使用Node开发HTTP接口的过程中,发现当接口数量越来越多,且接口之间互相依赖时,接口测试流程就会变得十分繁琐,且容易出错。那如何才能高效且全面地对接口进行测试呢?

通过实践,笔者发现可以使用Postman进行自动化集成测试,并将实践过程记录下来。

2 Postman配置

Postman 是一个用于构建和使用 API 的 API 平台,它 简化了 API 生命周期的每个步骤并简化了协作,可以让用户更快地创建更好的 API。以下简单介绍一下它的使用流程。

2.1 项目配置

一个完整的系统往往拥有许多模块和接口,因此推荐建议一个集合(Collection)来方便管理。同理,我们还可以通过文件夹(Folder)的方式对模块进行划分,来让整个项目结构更加清晰。并且这样的设置还有利于接下来的集成测试。

如果这个项目是多人开发,还可以创建一个团队空间(Team Workspace),把项目放到这个团队空间里,这样团队成员就可以一起使用了。需要注意的是,免费版的团队空间仅限3人使用,如果团队成员很多,就需要付费使用了。

 2.2 环境配置

Postman支持设置环境变量(environment variables)和全局变量(global variables)。区别在于,环境变量仅作用于当前环境(environment)下,全局变量作用于整个工作空间(workspace)。笔者自己一般使用环境变量。

环境变量最常见的场景就是设置URL前缀。一般开发接口都会有三个环境,三个环境有不同的URL:

  • 本地环境(local):http://127.0.0.1:xxxx(端口号)
  • 预发环境(beta):https://beta-api.xxx.com
  • 正式环境(production):https://api.xxx.com

 

在不使用环境变量的情况,假设需要测试一个接口:/user/info,三个环境就需要创建三个请求(request),比如本地环境就写成:http://127.0.0.1:xxxx/user/info。

使用环境变量怎么做呢?首先创建一个本地测试环境(local),在里面创建一个BASE_URL的变量,然后修改请求的URL为:{{BASE_URL}}/user/info,在发起请求的时候,Postman会对模版语法替换,把该位置换成变量的值。这样,一个请求就能对应多个环境。

 

除了环境设置,有时候接口可能还接了第三方统一登录,需要设置Cookie值。这个可以在单个接口的header上设置,不过一般都放在全局去做。在Save按钮的底下有行写着Cookie橙色的小字,点开之后就能进行设置。

众所周知,Cookie的作用域是domain本身以及domain下的所有子域名。因此,我们需要先设置域名(domain),然后在域名下面设置对应的Cookie。因为子域名能调用父域名的Cookie,因此这里需要设置本地环境(local)和线上(beta + production)环境两个域名的Cookie即可。

2.3 接口配置

一切准备就绪,我们就可以配置接口请求(Request)。这个也是大家最常用的界面。上部为请求信息,底下为响应数据。

具体来讲,请求可以设置多种请求方式(method),可以设置路由参数(Params),一些请求方式,还需要设置请求内容(body)。请求内容(body)也支持多种数据格式,我这边使用的是JSON格式,对应的content-type为application/json。

除以上通用配置外,Postman还支持设置请求脚本(Pre-request Script)和测试脚本(Tests Script)

 

3 集成测试

上面章节介绍了如何使用Postman去发起一个请求并获取响应,在开发阶段,这些功能可以满足大部分的需求。但进入测试阶段,涉及到多接口联动,如B接口依赖A接口的响应数据,C接口依赖B接口的响应数据,这个时候,就需要测试人员自己手动将A接口的响应数据复制到B接口的请求中去,测试流程十分繁琐。接下来,介绍一个方法来将这些接口请求串联起来。

3.1 测试脚本

基本思路其实还是设置环境变量。比如展示通知接口(/notice/show/:id)依赖创建通知接口(/notice/create),可以把展示通知接口的URL改为{{BASE_URL}}/notice/show/{{notice_id}},只要设置notice_id,就可以调用不同的ID了。区别在于,上面使用的BASE_URL的值是一个确定的常量,而notice_id是随着创建接口动态变化的值,如何动态设置环境变量是关键。

这里就需要用到Postman请求脚本(Pre-request Script)和测试脚本(Tests Script)。

从字面意思理解,请求脚本(Pre-request Script)触发时机是在请求之前,常见的使用场景比如给接口设置一个当前时间戳的参数。测试脚本(Tests Script)触发时机是在请求之后,常用的使用场景比如测试当前接口结果是否正确。这两种脚本都使用JavaScript进行编写,对于前端工程师来说,无任何学习成本,十分赞。

不光是请求(Request)可以设置脚本,集合(Collection)和文件夹(Folder)也能设置脚本,并且它们的脚本可以在内部的所有请求中生效。笔者用console.log测试了这几者的执行顺序,结果如下:

  1. 集合的请求脚本(Pre-request Script)
  2. 文件夹的请求脚本(Pre-request Script)
  3. 请求的请求脚本(Pre-request Script)
  4. 执行请求
  5. 集合的测试脚本(Tests Script)
  6. 文件夹的测试脚本(Tests Script)
  7. 请求的测试脚本(Tests Script)

 

回到需求,在请求之后,动态设置环境变量,因此可以在测试脚本(Tests Script)做这事。

首先我们解析响应数据,转换成JSON对象,然后对返回接口进行判断,如果请求正常,则通过pm.environment.set设置环境变量。同时,这里还可以增加测试点,这一部分可以在响应的Tests Result中看到。另外,在界面右侧有许多代码片段(snippet),可以帮助新手快速上手。

有创建,就有删除,我们可以在删除接口的测试脚本中调用pm.environment.unset("variable_key")来清除该环境变量,这样就完成了闭环。

3.2 全流程测试(Runner)

接口联动的问题解决了,但还是需要测试人员一个个点过去,还是不够智能。

这里,我们用Postman的Runner功能来自动化执行全流程测试。

在执行测试之前,最好对业务流程进行一遍梳理,以便发现问题。

 

流程整理完之后,我们就可以进行配置了。

在Ruuner界面,我们可以在左侧设置测试环境,运行次数等,在右侧可以选择需要测试的接口和调整调用顺序。调用顺序也可以在测试脚本中使用pm.setNextRequest("request_name")进行调整。

点击Run按钮,等待片刻,我们就能得到一个测试结果页面,由于我们之前设置测试点,根据左上角的0 FAILED ,就可以知道这次测试结果通过。

至此,自动化集成测试就完成了。

4 更多

以上步骤,我们都是在Postman的可视化界面下完成的,其实Postman还有命令行工具:newman。配合jenkins等持续集成工具,可以真正实现自动化测试。

该命令行工具可以通过NPM进行安装:

  1. npm install -g newman

  2. 复制代码

具体方法详见官方文档。

感谢每一个认真阅读我文章的人,礼尚往来总是要有的,虽然不是什么很值钱的东西,如果你用得到的话可以直接拿走:


这些资料,对于【软件测试】的朋友来说应该是最全面最完整的备战仓库,这个仓库也陪伴上万个测试工程师们走过最艰难的路程,希望也能帮助到你!有需要的小伙伴可以点击下方小卡片领取 

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/231210.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

激光雷达标定板提高扫地机器人感知环境能力和清洁效率

智能扫地机器人的激光雷达标定板是一种用于校准激光雷达的设备,它通常由不同反射率的涂料涂覆在板面上,用于接收激光雷达发出的激光束并将其反射回来,从而帮助校准激光雷达的测量参数。在自动驾驶和机器人领域,激光雷达和相机的联…

什么是Redis数据库,如何在 CentOS 7 上安装 Redis,看完你就懂了

目录 一、Redis简介 二、Redis特点 三、数据类型 四、Redis应用场景 五、Centos环境部署Redis 六、常见参数整理 一、Redis简介 Redis ,是一个高性能(NOSQL)的key-value数据库,Redis是一个开源的使用ANSI C语言编写、支持网络、可基于内存亦可持久化的日志型…

Java 使用oshi获取当前服务器状态cpu、内存、存储等核心信息

文章目录 简介相关资料maven依赖oshi-官方示例获取CUP信息代码获取内存信息获取磁盘信息 简介 OSHI 是基于 JNA 的(本地)操作系统和硬件信息库。它不需要安装任何其他额外的本地库,旨在提供一种跨平台的实现来检索系统信息,例如操…

C++_引用

目录 1、引用的使用 1.1 对“别名”的修改 1.2 “别名”的“别名” 1.3 对“别名”进行赋值 2、引用的意义 2.1 指针的“别名” 3、函数返回值作为引用 3.1 返回值作为引用的意义 4、引用的权限 4.1 引用的类型转换 5、指针与引用 5.1 指针与引用的相似处 5.2 指…

FPGA时序分析与约束(0)——目录与传送门

一、简介 关于时序分析和约束的学习似乎是学习FPGA的一道分水岭,似乎只有理解了时序约束才能算是真正入门了FPGA,对于FPGA从业者或者未来想要从事FPGA开发的工程师来说,时序约束可以说是一道躲不过去的坎,所以这个系列我们会详细介…

使用selenium的edge浏览器登录某为

互联网上基本都是某哥的用法,其实edge和某哥的用法是一样的就有一下参数不一样。 一、运行环境 Python:3.7 Selenium:4.11.2 Edge:版本 120.0.2210.61 (正式版本) (64 位) 二、执行代码 from time import sleepfrom selenium…

如何赢得并留住订阅者:12 个必须尝试的订阅营销策略

Netflix、Hubspot、Spotify 和 Slack 都是流行的基于订阅的服务,您可能每天都会使用它们,无论是工作还是娱乐。这些例子表明,订阅业务模式深受 SaaS 创业者的青睐。 这种模式的吸引力很容易理解,特别是考虑到订阅市场预计到 2025…

Node包管理工具 - nvm、npm、yarn、cnpm、pnpm

转载说明 原文地址 简介 nvm : 可以实现一台电脑,拥有多个版本的Node npm : node package manager 下载Node后自带的一个包管理工具 yarn : npm 的升级版,更优秀 cnpm : 配置下载非官方地址的依赖(淘宝、华为、腾讯镜像) pnpm :…

智能优化算法应用:基于蜣螂算法无线传感器网络(WSN)覆盖优化 - 附代码

智能优化算法应用:基于蜣螂算法无线传感器网络(WSN)覆盖优化 - 附代码 文章目录 智能优化算法应用:基于蜣螂算法无线传感器网络(WSN)覆盖优化 - 附代码1.无线传感网络节点模型2.覆盖数学模型及分析3.蜣螂算法4.实验参数设定5.算法结果6.参考文献7.MATLAB…

数据中心:保障企业运营安全可靠的关键

随着人工智能与云计算的爆发,数据中心行业迎来了前所未有的需求增长。然而,这也带来了一系列的挑战。各地政府机构对数据中心建设出台了更为完善和严格的地方标准,企业面临着运营成本高、人才短缺和节能减排等困难。同时,过去频频…

redis 三主三从高可用集群docker swarm

由于数据量过大,单个Master复制集难以承担,因此需要对多个复制集进行集群,形成水平扩展每个复制集只负责存储整个数据集的一部分,这就是Redis的集群,其作用是提供在多个Redis节点间共享数据的程序集。 官网介绍地址 re…

理解基于 Hadoop 生态的大数据技术架构

转眼间,一年又悄然而逝,时光荏苒,岁月如梭。当回首这段光阴,不禁感叹时间的匆匆,仿佛只是一个眨眼的瞬间,一年的旅程已成为过去,而如今又到了画饼的时刻了 ! 基于 Hadoop 生态的大数…

msvcp100.dll丢失的常见原因/msvcp100.dll丢失的解决方法分享

在计算机使用过程中,我们经常会遇到一些错误提示,其中之一就是“msvcp100.dll丢失”。这个错误提示通常出现在运行某些程序或游戏时,给使用者带来了很大的困扰。那么,究竟是什么原因导致了msvcp100.dll文件的丢失呢?本…

【Fastadmin】利用 build_select 做一个树状下拉选择框

1.效果展示 系统crud生成的下拉分类有些不是很好看,并且选择困难,看不出级差,效果如下: 经过 build_select 加工后的效果,美观好看,并添加上搜索功能: 2. 首先需要写一个树状图的数据格式 protected $datalist []; pu…

集合贴——问答引擎

1.FAQ问答引擎 FAQ问答引擎是一种传统的问答机器人引擎,它基于NLP算法研发,为用户提供高泛化性、灵活拓展的QA对匹配引擎。FAQ通常以{1条标准问 1 条标准答案 n条相似问}的结构将语料存储在FAQ语料库中(如mysql、ElasticSearch&#xff09…

# K近邻算法 度量距离

K近邻算法 度量距离 欧氏距离(Euclidean distance) 欧几里得度量(euclidean metric)(也称欧氏距离)是一个通常采用的距离定义,指在 m m m维空间中两个点之间的真实距离,或者向量的自然长度(即该点到原点的距离)。在二维和三维空间中的欧氏距离就是两点…

电商平台商品销量API接口,30天销量API接口接口超详细接入方案说明

电商平台商品销量API接口的作用主要是帮助开发者获取电商平台上的商品销量信息。通过这个接口,开发者可以在自己的应用或网站中实时获取商品的销量数据,以便进行销售分析、库存管理、市场预测等操作。 具体来说,电商平台商品销量API接口的使…

如何用c语言来判断素数

首先要知道什么是素数,就是素数的定义,素数一般指质数。质数是指在大于1的自然数中,除了1和它本身以外不再有其他因数的自然数。然后我们以100到200以内的数字来举例。 先用穷举法的思想,来把100到200的数字一个一个的列举出来&a…

[ 蓝桥杯Web真题 ]-Markdown 文档解析

目录 介绍 准备 目标 规定 思路 补充知识 解法参考 介绍 Markdown 因为其简洁的语法大受欢迎,已经成为大家写博客或文档时必备的技能点,众多博客平台都提倡用户使用 Markdown 语法进行文章书写,然后再发布后,实时的将其转化…

Meta开源最大多模态视频数据集—Ego-Exo4D

社交、科技巨头Meta联合15所大学的研究机构,经过两年多的努力发布了首个多模态视频训练数据集和基础套件Ego-Exo4D,用于训练和研究AI大模型。 据悉,该数据集收集了来自13个城市839名参与者的视频,总时长超过1400小时,包含舞蹈、足球、篮球、…