使用 Postman 实现 API 自动化测试

news2024/10/5 13:49:48

目录:导读

背景介绍

名词解析

使用说明

执行 API 测试

集成 CI 实现 API 自动化测试

写在最后


背景介绍

相信大部分开发人员和测试人员对 postman 都十分熟悉,对于开发人员和测试人员而言,使用 postman 来编写和保存测试用例会是一种比较方便和熟悉的方式。但 postman 本身是一个图形化软件,相对较难或较麻烦(如使用 RPA)实现自动化测试。幸运的是,postman 还提供了一个命令行工具 newman,我们可以借助 postman + newman 来实现 API 自动化测试。

名词解析

1. Collection

Collection 是一组保存的请求,postman 中发送的每个请求都会显示在侧栏的 ”历史记录“ 选项卡下。请求数量比较少的时候,通过历史记录来重用请求会比较方便。随着请求量的增长,在历史记录中查找特定请求可能会非常耗时。此时,你可以将所有请求保存为一个 collection,以便于访问。

2. Environment

Environment 是一组可以在 postman 请求中使用的变量。你可以根据不同的环境(如 dev、test、prod 等),把一组相关的变量放到不同的 environment 文件中,来对不同的环境进行 API 自动化测试。

使用说明

我们以测试百度的 https://www.baidu.com/sugrec 这个 API 作为示例。

1. 创建 Collection

新建 collection:

新建请求:

测试请求,状态码返回 200:

编写测试断言并验证断言:

pm.test("Return 200", function() {
    pm.response.to.have.status(200)
})

2. 创建 Environment

新建 environment:

填写参数信息,这里简单使用 host 作为参数:

在 collection 的请求中使用 host 参数,并进行测试:

3. 导出 Collection 和 Environment

导出 collection 为 collection.json:

导出 environment 为 environment.json:

执行 API 测试

我们只需要基于导出的 collection.json 和 environment.json 执行一条 docker 指令即可完成 API 测试:

docker run --rm -i -v /root/postman:/etc/newman \
    --entrypoint sh postman/newman:alpine -c \
    'npm i -g newman-reporter-html; \
    newman run collection.json \
    --suppress-exit-code 1 \
    --color off \
    --reporters cli,html\
    --reporter-html-export api_report.html \
    --environment=environment.json'

指令解析:

项目说明
docker run启动 docker 容器
--rm 退出容器时销毁容器
-i交互模式
-v /root/postman:/etc/newman目录挂载
--entrypoint sh postman/newman:alpine -c容器执行指令
npm i -g newman-reporter-html安装 html 报告插件
newman run collection.json指定测试 collection.json
--suppress-exit-code 1 指定错误状态码为 1
--color off 关闭颜色
--reporters cli,html输出命令行和 html 报告
--reporter-html-export api_report.html设置输出 html 文件名
--environment=environment.json指定 environment.json 文件

执行结果:

查看 html 报告:

集成 CI 实现 API 自动化测试

你只需要针对你的代码项目准备好 collection.json 和 environment.json,把它们存放到代码中的某个目录,然后在 jenkins 或 gitlab-ci 中添加执行上面介绍的 docker 指令即可。

写在最后

如果你觉得文章还不错,请大家 点赞、分享、留言 下,因为这将是我持续输出更多优质文章的最强动力!

看到这篇文章的人有觉得我的理解有误的地方,也欢迎评论和探讨~

你也可以加入下方的的群聊去和同行大神交流切磋

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Vuex 状态管理器(vuex安装与配置、state、mutations、actions、getters、module)全解

文章目录知识点Vuex 的简介Vuex 的安装与配置Vuex 的核心概念核心概念之:State核心概念之:Mutations核心概念之:Actions核心概念之:GettersVuex 规则核心概念之:Module实验总结知识点 Vuex 的简介Vuex 的安装与配置Vu…

UE实现相机飞行效果CesiumForUnreal之DynamicPawn飞行原理浅析

文章目录 1.实现目标2.实现过程2.1 FlyTo实现原理与代码2.2 DynamicPawn飞行原理3.参考资料1.实现目标 基于CesiumForUnreal的Dynamic Pawn实现飞行效果GIF动图: 2.实现过程 实现原理较为简单,基于CesiumForUnreal插件中DynamicPawn中的Camera实现相关功能。其中FlyTo直接通…

人工智能的几个研究方向

人工智能主要研究内容是:分布式人工智能与多智能主体系统、人工思维模型、知识系统、知识发现与数据挖掘、遗传与演化计算、人工生命、人工智能应用等等。 其中热门研究有以下几种。 一、计算机视觉 就包括图像识别,视频识别,具体应用有人…

接口自动化测试用例详解

phpunit 接口自动化测试系列 Post接口自动化测试用例 Post方式的接口是上传接口,需要对接口头部进行封装,所以没有办法在浏览器下直接调用,但是可以用Curl命令的-d参数传递接口需要的参数。当然我们还以众筹网的登录接口为例,讲…

Qt 事件机制

【1】事件 事件是可以被控件识别的操作。如按下确定按钮、选择某个单选按钮或复选框。 每种控件有自己可识别的事件,如窗体的加载、单击、双击等事件,编辑框(文本框)的文本改变事件等等。 事件就是用户对窗口上各种组件的操作。…

速锐得适配北汽EX系列电动汽车CAN总线应用于公务分时租赁

过去的几年,我们看到整个分时租赁业务出现断崖式下跌,这是我们看到这种市场情况,是必然,也是出乎意料。原本很多融资后的出行公司、大牌的出行服务商的分时租赁业务,受各种影响不得不转型成其他出行服务。例如&#xf…

图像处理实战--Opencv实现人像迁移

前言: Hello大家好,我是Dream。 今天来学习一下如何使用Opencv实现人像迁移,欢迎大家一起参与探讨交流~ 本文目录:一、实验要求二、实验环境三、实验原理及操作1.照片准备2.图像增强3.实现美颜功能4.背景虚化5.图像二值化处理6.人…

C++ 实现pcm 转wav

输入音PCM 属性&#xff1a; 16k采样率 16位深 单声道 #include <iostream> #include <vector> #include <fstream> using namespace std; /* wav音频头部格式 */ typedef struct _wave_pcm_hdr { char riff[4]; // "RIFF&…

接口测试神器——Apifox从安装到使用的详细教程

目录 Apifox简介 安装 API文档导入 接口管理 接口设计 接口调试 使用脚本 Mock数据 测试管理 主题设置 总结 重点&#xff1a;配套学习资料和视频教学 Apifox简介 Apifox 的定位是Postman Swagger Mock JMeter&#xff0c;具有API文档管理、API调试、API Mock、…

2022年“网络安全”赛项山东省菏泽市选拔赛任务书

2022年“网络安全”赛项山东省菏泽市选拔赛任务书 任务书 一、竞赛时间 共计3小时。 二、竞赛阶段 竞赛阶段 任务阶段 竞赛任务 竞赛时间 分值 第一阶段单兵模式系统渗透测试 任务一&#xff1a;Apache安全配置 任务二&#xff1a;数据分析-A 任务三&#xff1a;Windows操作系…

四信5G智慧灯杆落地厦门软件园 赋能园区实现智慧升级

2023年初&#xff0c;四信5G智慧灯杆项目落地厦门市集美软件园三期&#xff0c;实现一杆多能、多杆合一&#xff0c;为园区智慧管理和产业经济数字化高效赋能&#xff0c;打造智慧园区5G智慧灯杆项目标杆。 5G智慧灯杆赋能园区实现智慧升级 园区是城市发展的重要组成部分&#…

Xiou的个人说明

小幽&#xff08;Xiou&#xff09;的个人说明书 V1.0 小幽是谁? 周六读书吧推广大使&#xff0c;终身学习爱好者、终身阅读爱好者、硬件工程师、学习成长陪伴伙伴、大学生职业规划答疑解惑者。 拥有【结构化思维】、【执行力】、【超强学习力】、【前瞻】等核心能力。 过往…

serdes理解

serdes概念 serdes是一种TX并行转串行传输&#xff0c;RX串行转并行的接收的串并转换协议。而且在传输过程中不传输时钟信号&#xff0c;通过从数据信号中恢复时钟。serdes和PHY不是等效的概念。满足serdes协议的有很多不同种类的PHY。Serial RapidlO、FiberChannel (FC)、PCI-…

Python代码使用PyQt5制作界面并封装

目录参考链接续&#xff1a;https://blog.csdn.net/yulinxx/article/details/93344163 若要对此程序进行封装&#xff0c;加个界面&#xff0c;然后制作成 EXE&#xff0c; 使用 PyQt5 制作界面&#xff0c;PyInstaller 进行封装成 EXE 可参考&#xff1a; Python制作小软件…

RabbitMQ简介及安装

RabbitMQ简介及安装 1.RabbitMQ概述 官网&#xff1a;https://www.rabbitmq.com/ 基本介绍 RabbitMQ 是一个流行的开源消息中间件&#xff0c;它实现了高级消息队列协议&#xff08;AMQP&#xff09;&#xff0c;为 分布式应用程序提供了可靠的、异步的消息传递机制。Rabbi…

【Nacos】@NacosValue的使用与原理

在SpringCloud工程中&#xff0c;可以使用RefreshScopeValue实现配置文件内容变更后的动态刷新。 在SpringBoot工程中&#xff0c;可以使用NacosValue来实现配置文件内容变更后的动态刷新。 NacosValue的使用 引入依赖&#xff1a; <dependency><groupId>com.a…

网页打印与导出word实现在A4纸上相同效果

在工作中遇到这样一个需求&#xff0c;客户要求&#xff1a; 1、实现在浏览器中打印和导出到word中&#xff0c;要求浏览器打印出来的效果和word中打印的效果基本一致。2、打印的内容要自动分页&#xff0c;第一页的顶部有文件头&#xff0c;最后一页的底部有页尾。 这里记录一…

GitHub 下载超过 28W 次的 Java 面试题库来袭,面面俱到太全了

“金三银四”、“金九银十” 一直被称为是跳槽的旺季&#xff0c;最近也有不少小伙伴找我咨询一些面试相关的问题。刚好小编最近获得一份收费 Java 面试题库&#xff01; 这些面试题都是互联网大厂真实流出的面试内容&#xff0c;每个问题都附带完整详细的答案&#xff0c;不像…

React(三):脚手架、组件化、生命周期、父子组件通信、插槽

React&#xff08;三&#xff09;一、脚手架安装和创建1.安装脚手架2.创建脚手架3.看看脚手架目录4.运行脚手架二、脚手架下从0开始写代码三、组件化1.类组件2.函数组件四、React的生命周期1.认识生命周期2.图解生命周期&#xff08;1&#xff09;Constructor&#xff08;2&…

SpringMvc+Spring+JPA+Hibernate实现的增删改查

SpringMvcSpringJPAHibernate实现的增删改查 基于SSJ 12.1目录图 完整项目目录 12.2创建步骤 1.选择目录 2.选择基于的包结构 3.设置坐标。不能和已有的重复。 4.创建出来的包结构 5.自己配置tomcat&#xff0c;设置构建路径 下面进行依赖坐标导入。 12.3pom依赖 可以全设置5.3…