Postman + Newman + Jenkins 搭建接口自动化测试

更新日期: 2026-04-22 阅读: 26 标签: 接口

接口自动化测试是很多团队都需要做的事。Postman + Newman + Jenkins这套方案已经很成熟了,用的人也多。

整体分三步:

  1. 在Postman里写好测试

  2. 导出成JSON文件

  3. 让Jenkins调用Newman去执行,生成报告

下面一步步来说。


第一步:在Postman里准备测试

先打开Postman,把测试用例准备好。

创建集合

把所有要测的API请求放到一个Collection里,可以叫APITests。建议按功能模块分,比如用户模块、订单模块,这样好找。

编写测试脚本

这是核心。在请求的Tests标签页里写JavaScript代码,用来判断接口返回对不对。

// 1. 检查状态码是不是200
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

// 2. 检查返回数据里有token,并且不为空
pm.test("响应数据中token应存在且非空", function () {
    const responseData = pm.response.json().data;
    const token = responseData?.token;
    pm.expect(token).to.exist.and.to.not.be.empty;
});

// 3. 检查响应时间小于200毫秒
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

用pm.environment.set()还能在请求之间传变量。比如登录接口返回的token,可以设置给后面的请求用。

导出测试文件

右键点击Collection,选Export,格式选v2.1,保存成文件。如果用了环境变量(比如{{base_url}}),也要去环境管理器里点Export,导出环境文件。


第二步:本地验证Newman命令

在Jenkins上跑之前,先在本地试试命令能不能用。省得在Jenkins上反复改。

安装Node.js和Newman

Newman是Node.js的一个模块,需要先装Node.js。装好之后,在命令行里执行:

npm install -g newman

执行测试

打开终端(Windows用CMD或PowerShell),运行:

newman run API-Tests.postman_collection.json

常见问题:提示不是内部或外部命令

如果遇到这个报错,按下面三步操作:

  1. 检查Node.js有没有装。输入node -v,有版本号说明装好了。没有就去nodejs.org下载LTS版本安装。

  2. 安装Newman。输入npm install -g newman。

  3. 如果还不行,就是环境变量没配好。Newman一般装在C:\Users\你的用户名\AppData\Roaming\npm,把这个路径加到系统PATH里,重启命令行就好了。

带参数运行

实际用的时候通常要带更多参数:

newman run API-Tests.postman_collection.json \
  -e My-Environment.json \
  -r htmlextra,cli \
  --reporter-htmlextra-export report.html
  • -e 指定环境变量文件

  • -r 指定报告格式

  • --reporter-htmlextra-export 指定报告文件名

看到failures是0,说明本地环境没问题了。


第三步:在Jenkins里配置任务

这一步把Newman和Jenkins连起来。

方案A:Freestyle项目(适合新手)

  1. 新建任务:点New Item,起个名字,选Freestyle project。

  2. 源码管理:选Git,填仓库地址(里面放着Postman导出的JSON文件)。

  3. 构建环境:勾选Provide Node & npm bin/ folder to PATH,选好NodeJS版本。

  4. 构建步骤:点Add build step,选Execute shell(Linux/Mac)或Execute Windows batch command(Windows)。

Windows示例:

newman run "API-Tests.postman_collection.json" -e "My-Environment.json"

Mac/Linux示例:

export PATH=$PATH:/opt/homebrew/bin
newman run "API-Tests.postman_collection.json" -e "My-Environment.json"

方案B:Pipeline项目(更灵活)

Pipeline方式用一个Jenkinsfile文件来定义整个流程,方便版本控制。

在代码仓库根目录创建Jenkinsfile:

pipeline {
    agent any
    stages {
        stage('Checkout') {
            steps {
                checkout scm
            }
        }
        stage('Run API Tests') {
            steps {
                sh 'npm install -g newman'
                sh 'newman run "API-Tests.postman_collection.json" -e "My-Environment.json" -r junit --reporter-junit-export test_results.xml'
            }
        }
    }
    post {
        always {
            junit 'test_results.xml'
        }
    }
}

在Jenkins里新建任务,类型选Pipeline。Pipeline配置里,Definition选Pipeline script from SCM,填好Git仓库地址就行。

定时执行

在任务配置里找到Build Triggers,勾选Build periodically,用cron语法填时间。比如H/15 * * * *表示每15分钟跑一次。


第四步:查看测试报告

构建完可以看结果:

  • 控制台输出:点构建记录,进Console Output,能看到Newman的执行日志。

  • 可视化报告:如果用-r junit参数,Jenkins会把报告解析出来,在构建页面显示趋势图。


pm对象常用功能

pm是Postman内置的全局对象,可以在测试脚本里用。

属性/方法作用示例
pm.response响应对象pm.response.code(状态码)
pm.request请求对象pm.request.url
pm.variables变量(按优先级获取)pm.variables.get("varName")
pm.environment环境变量pm.environment.set("key", "value")
pm.globals全局变量pm.globals.get("key")
pm.collectionVariables集合变量pm.collectionVariables.set("key", "value")
pm.sendRequest发送异步请求pm.sendRequest("https://api.example.com", callback)
pm.info请求元信息pm.info.requestName

总结与避坑指南

几个有用的技巧

  • 把用户名、密码等测试数据放CSV文件里,用Newman的-d参数导入,一个脚本可以跑多组数据。

  • 用环境变量区分开发、测试、生产环境,脚本可以复用。

  • 密码、Token别写死在文件里。用Jenkins的Credentials Binding插件管理,执行时动态注入。

常见问题排查

  • Newman找不到:Jenkins的PATH里没有Newman。用which newman找到路径,手动加到PATH里。

  • 文件路径错误:Jenkins执行命令的工作目录是任务的工作区。确保JSON文件已经通过Git拉取下来了,或者用绝对路径。

按照上面的步骤操作,就能搭起来一套API自动化测试流水线。后续可以接Git的Webhook,代码提交就自动触发测试,把自动化真正融入日常开发流程里。

本文内容仅供个人学习、研究或参考使用,不构成任何形式的决策建议、专业指导或法律依据。未经授权,禁止任何单位或个人以商业售卖、虚假宣传、侵权传播等非学习研究目的使用本文内容。如需分享或转载,请保留原文来源信息,不得篡改、删减内容或侵犯相关权益。感谢您的理解与支持!

链接: https://fly63.com/article/detial/13683

相关推荐

常用HTTP接口测试工具对比

从功能上Jmeter最为强大,可以测试各种类型的接口,不支持的也可以通过网上或自己编写的插件进行扩展。SoapUI专门针对HTTP类型的两种接口,其初衷更是专门测试Soap类型接口,对于其他协议的接口不支持

免费的公共API接口_WebService接口大全

这篇文章为大家整理一下免费,常用的的WebService接口,列举一些搜集到的免费的公共API接口,希望对你有所帮助,天气预报Web服务,数据来源于中国气象局;IP地址来源搜索 WEB 服务;随机英文、数字和中文简体字

前后端分离项目的跨域及保持Session会话

当Web项目前后端分离开发的时候, 由于域名不一致, 会出现无法请求和无法维持会话的情况,在前端Ajax请求后台的时候, 打开控制台可以看到, 每一次请求之前都会有一次OPTIONS类型的请求

JSON API免费接口

各种提供JSON格式数据返回服务网站的API接口,为大家搜集了一些能够返回JSON格式的服务接口。部分需要用JSONP调用。

vue中使用proxy配置不同端口和ip接口

使用vue-cli创建的项目,开发地址是localhost:8080,由于后台开发不同的模块,导致每个模块请求的ip和端口号不一致,解决问题:在vue.config.js中配置不同的端口号

前后端分离,接口对接问题

关于前后端对接问题下面好程序员web前端学习路线为大家解答。对于前后端分离开发,必须要写接口文档。否则,第一:前后端开发没有标准,没有依据。第二:容易扯皮,没法追踪,职责不清

TypeScript接口(Interfaces)来定义对象的类型

在 TypeScript 中,我们使用接口(Interfaces)来定义对象的类型。在面向对象语言中,接口(Interfaces)是一个很重要的概念,它是对行为的抽象,而具体如何行动需要由类(classes)去实现(implements)

vue 项目接口管理

在vue开发中,会涉及到很多接口的处理,当项目足够大时,就需要定义规范统一的接口,如何定义呢?方法可能不只一种,本文使用axios+async/await进行接口的统一管理。

vue项目接入mock&& axios 通用配置

兵马未动,粮草先行; 同理,项目开发过程中经常会出现接口未出, 前端页面已搭建完毕的情况;此时为了提高前端的开发效率,解放生产力,我们 FE 可以按照预定的接口文档做一些接口模拟的工作

Mock.js模拟接口数据

现在开发已经是前后端分离了,前端和后端可以同时进行开发,互不影响,但是有些时候后端开发的接口慢于前端,导致前端需要等待后端的接口完成才能完成前后端对接,为了解决这个痛点,出现了模拟接口数据的方案

点击更多...

内容以共享、参考、研究为目的,不存在任何商业目的。其版权属原作者所有,如有侵权或违规,请与小编联系!情况属实本人将予以删除!