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

摘要:接口自动化测试是很多团队都需要做的事。Postman + Newman + Jenkins这套方案已经很成熟了,用的人也多。整体分三步:在Postman里写好测试,导出成JSON文件,让Jenkins调用Newman去执行,生成报告

接口自动化测试是很多团队都需要做的事。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\ pm,把这个路径加到系统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://shenqiku.cn/article/FLY_13683