当前位置: 首页 > news >正文

postman+Jenkins进行API automation集成

目录

步骤一:在 Postman 中准备测试集合(Collection)

步骤二:准备本地 Newman 运行环境(测试用)

步骤三:配置 Jenkins 流水线任务

步骤四:构建并查看结果

高级配置与优化


首先要了解这套组合的核心思路是:

  1. ​在 Postman 中​​:设计和调试你的 API 测试用例(Collections)。
  2. ​使用 Newman​​:Postman 的命令行集合(Collection)运行工具,让你能在终端或脚本中执行测试。
  3. ​在 Jenkins 中​​:创建一个流水线(Pipeline)任务,自动拉取代码、安装 Newman、运行测试并生成报告。

这样就能实现每次代码推送后,自动验证 API 是否正常工作。


步骤一:在 Postman 中准备测试集合(Collection)

  1. ​创建 Collection​​:将所有需要测试的 API 请求组织到一个 Collection 中(例如 My API Tests)。
  2. ​编写测试脚本​​:在每个请求的 ​​Tests​​ 标签页中,用 JavaScript 编写断言。可以用postman自己封装的测试方法:
    例如:
     
  3. ​导出 Collection​​:
    • 右键点击你的 Collection -> ​​Export​​。
    • 选择推荐的 ​​v2.1​​ 格式 -> 导出为 My-API-Tests.postman_collection.json
  4. ​导出环境变量(如果需要)​​:如果你使用了环境变量(如 {{base_url}}),同样需要导出环境(Environment)文件。

步骤二:准备本地 Newman 运行环境(测试用)

在将任务交给 Jenkins 之前,最好先在本地测试命令行能否正常运行。

  1. ​安装 Newman​​(需要先安装 Node.js):
    npm install -g newman
  2. ​安装 HTML 报告插件​​(强烈推荐):
    npm install -g newman-reporter-html
  3. ​在本地运行测试​​:
    # 基本运行
    newman run My-API-Tests.postman_collection.json# 使用环境变量文件
    newman run My-API-Tests.postman_collection.json -e my-environment.postman_environment.json# 生成 HTML 报告
    newman run My-API-Tests.postman_collection.json -r html,cli --reporter-html-export ./newman-report.html
    运行后,打开 newman-report.html 文件查看漂亮的测试报告。确保本地运行成功后再配置 Jenkins。

步骤三:配置 Jenkins 流水线任务

这是最核心的步骤。我们将创建一个 ​​Pipeline​​ 任务,使用 ​​Jenkinsfile​​ 来定义整个构建、测试、报告流程。

​方法一:使用 Jenkinsfile(推荐)​

在你的项目代码仓库(如 Git)的根目录下,创建一个名为 Jenkinsfile 的文件,内容如下:

pipeline {agent any // 在任何可用的代理上运行stages {stage('Checkout') {steps {// 从Git仓库拉取代码,其中包含你的Postman collection.json文件git branch: 'main', url: 'https://github.com/your-username/your-api-project.git'}}stage('Install Newman') {steps {script {// 使用Node.js环境安装newman和html报告器sh 'npm install -g newman newman-reporter-html'}}}stage('Run API Tests') {steps {script {// 使用newman运行测试并生成HTML和CLI报告sh 'newman run My-API-Tests.postman_collection.json -r html,cli --reporter-html-export ./newman-report.html'}}}}post {always {// 总是发布HTML报告,无论构建成功与否publishHTML (target: [allowMissing: false,alwaysLinkToLastBuild: true,keepAll: true,reportDir: '.', // 报告所在目录reportFiles: 'newman-report.html', // 报告文件名reportName: 'Postman API Test Report' // 在Jenkins侧边栏显示的名称])}}
}

​方法二:在 Jenkins UI 中直接配置​

  1. ​新建任务​​:在 Jenkins 中,创建一个新的 ​​Pipeline​​ 任务。
  2. ​配置 Pipeline​​:
    • 在 ​​Pipeline​​ 部分,选择 ​​Pipeline script​​。
    • 将上述 Jenkinsfile 中的 pipeline {...} 全部内容复制到脚本输入框中。
    • 或者,更佳实践是选择 ​​Pipeline script from SCM​​,并配置你的 Git 仓库地址。这样 Jenkins 会自动从你的仓库中读取 Jenkinsfile

步骤四:构建并查看结果

  1. ​点击“立即构建”​​:手动触发第一次构建。
  2. ​查看控制台输出​​:构建完成后,点击构建号 -> ​​Console Output​​,查看详细的日志,确认 newman 是否成功运行。
  3. ​查看可视化报告​​:在构建页面的侧边栏,你会看到一个 ​​Postman API Test Report​​ 的链接。点击即可查看精美的、可视化的 HTML 测试报告,其中包含了通过/失败的测试用例详情、响应时间等。

高级配置与优化

  • ​使用环境变量管理敏感信息​​:切勿将密码、Token 等硬编码在 Postman Collection 或代码中。可以使用:

    • ​Jenkins Credentials Binding​​:在 Jenkins 中管理凭据,并在 Pipeline 中通过 withCredentials 指令将其作为环境变量传递给 Newman。
    • ​在命令中传递变量​​:newman run ... --env-var "api_key=$API_KEY"
  • ​失败处理​​:Newman 默认在遇到测试失败时会以非零代码退出,这将导致 Jenkins 构建标记为 ​​FAILURE​​。这正是我们想要的行为,说明 API 出现了回归问题。

  • ​定时构建或 Webhook 触发​​:你可以配置 Jenkins 任务:

    • ​定时构建​​:例如每晚凌晨运行一次完整的 API 回归测试。
    • ​GitHub Webhook​​:实现真正的持续集成(CI)。当代码有新的 push 到仓库时,自动通知 Jenkins 开始执行测试。

通过以上步骤,你就成功地建立了一个强大、自动化的 API 持续集成流水线,能够及时反馈 API 的健康状况,极大提升软件质量和开发效率。不过由于postman的安全问题 目前用的少 大家可以根据情况选择
 

http://www.dtcms.com/a/388831.html

相关文章:

  • 【算法磨剑:用 C++ 思考的艺术・单源最短路收官】BF/SPFA 负环判断模板 + 四大算法全总结
  • Flink的介绍及应用
  • 微信小程序插屏广告(InterstitialAd)全解析与实战应用案例
  • 格雷希尔G70R系列快速密封连接器+GT系列软管组件的配套组合方案,在新能源汽车老化测试的应用
  • 【Debug日志| 随机下降】
  • 滑动窗口法的优化与实战——力扣209.长度最小的子数组
  • 【Spring Boot 报错已解决】org.yaml.snakeyaml.scanner.ScannerException 报错原因与解决方案
  • 国家统计局数据读取——数据读取——清洗数据06
  • 基于 scratch 构建简单镜像
  • Web安全的暗角:10大易忽略逻辑漏洞解析!
  • 矩阵奇异值分解算法(SVD)详解
  • 【FreeRTOS】 二值信号量与互斥量(CMSIS-RTOS v2 版本)
  • Qt C++ :Qt全局定义<QtGlobal>
  • 【STL源码剖析】从源码看 list:从迭代器到算法
  • MySQL 专题(三):事务与锁机制深度解析
  • 使用BLIP训练自己的数据集(图文描述)
  • Geoserver修行记--在geoserver中如何复制某个图层组内容
  • DBG数据库透明加密网关:SQLServer应用免改造的安全防护方案,不限制开发语言的加密网关
  • 不同上位开发语言、PLC下位平台、工业协议与操作系统平台下的数据类型通用性与差异性详解
  • 【入门篇|第二篇】从零实现选择、冒泡、插入排序(含对数器)
  • javaweb Servlet基本介绍及开发流程
  • MySQL MHA高可用
  • 整体设计 逻辑拆解之2 实现骨架:一元谓词+ CNN的谓词系统
  • SpEL(Spring Expression Language)学习笔记
  • Java 字节码进阶3:面向对象多态在字节码层面的原理?
  • Tensor :核心概念、常用函数与避坑指南
  • 机器学习实战·第四章 训练模型(1)
  • 一次因表单默认提交导致的白屏排查记录
  • Linux:io_uring
  • 《第九课——C语言判断:从Java的“文明裁决“到C的“原始决斗“——if/else的生死擂台与switch的轮盘赌局》