资讯中心

Postman接口测试从入门到精通:环境变量、脚本自动化与CI/CD集成

📅 2026/8/5 6:31:13
Postman接口测试从入门到精通:环境变量、脚本自动化与CI/CD集成
1. 从零认识Postman它远不止一个“发请求”的工具如果你刚开始接触接口测试或者是从其他工具比如浏览器开发者工具、curl命令转过来的那么Postman大概率是你第一个听说并准备上手的工具。很多人对它的第一印象是“一个可以发HTTP请求的软件”这个理解没错但太浅了。在我过去几年带新人和处理各种项目接口问题的经验里Postman更像是一个接口协作与自动化测试的集成工作台。它把接口调试、文档编写、自动化测试、Mock服务甚至团队协作都打包在了一起对于后端开发、前端开发、测试工程师来说它几乎是日常工作中离不开的“瑞士军刀”。为什么是Postman而不是直接写代码或者用命令行核心在于效率和人机交互。当你需要快速验证一个登录接口是否返回正确的token或者排查一个复杂查询接口的传参问题时在Postman里点点鼠标、填填表单远比打开IDE、写一段代码、处理依赖、运行调试要快得多。这种即时反馈对于开发联调、测试验证来说至关重要。而且它的图形化界面让请求体、响应头、Cookie、环境变量这些概念变得非常直观降低了学习门槛。从你提供的热搜词也能看出大家关心的不仅仅是“怎么发请求”更深入到“如何设置中文”、“如何上传文件”、“如何关联接口参数”、“如何关闭SSL验证”等具体场景这说明大家正在从“会用”向“用好”迈进。这篇教程我会从一个一线从业者的角度带你系统性地掌握Postman。我们不只讲按钮怎么点更会深入讲清楚每个功能背后的设计逻辑、适用场景以及我踩过的一些坑。目标是让你看完后不仅能完成基础的接口调用更能建立起一套使用Postman进行高效接口测试和协作的工作流。2. 环境搭建与核心界面全解避开安装与初识的暗礁工欲善其事必先利其器。安装Postman看似简单但第一步走错后面可能麻烦不断。2.1 安装渠道选择与“必须登录”的真相首先强烈建议从Postman官网下载。搜索“postman下载”时可能会看到很多第三方下载站甚至CSDN的资源这些渠道的安装包可能版本老旧、捆绑垃圾软件甚至被植入恶意代码。官网地址是postman.com认准这个来源最安全。安装过程本身没什么特别但安装后打开第一个拦路虎就是登录界面。很多新手会困惑于“postman必须登陆吗”和“postman免登录”这类问题。这里必须说清楚对于最新版本的Postman桌面端首次使用强烈建议创建账户并登录。这不是强制但不登录会损失绝大部分核心价值。如果不登录你只能使用一个临时的、本地的“Postman Scratch Pad”。它的限制包括无法创建和保存“集合”Collections这是组织接口的核心单元、无法使用“环境”Environments管理不同配置的利器、无法进行团队协作、无法同步数据到云端。这意味着你的所有工作都无法持久化换台电脑或重装软件就全没了。所以那个“免登录”的版本通常是指非常老的版本如7.x之前的版本功能残缺且不再维护。因此我的建议是注册一个免费账户可以使用Google、GitHub账号快捷登录登录后享受完整功能。免费账户对于个人和小团队已经完全够用。2.2 主界面功能区深度解析成功登录后你会看到主界面。我们花几分钟把它彻底搞懂后续操作才能得心应手。左侧是导航栏这是你的“工作区仪表盘”Home主页官方的一些动态、模板和快速启动入口初期可以忽略。Workspaces工作区这是最高层级的组织单元。你可以为不同的项目创建不同的工作区比如“电商项目”、“用户中心项目”实现物理隔离。团队协作也基于工作区进行。Collections集合这是Postman的灵魂。你可以把它理解为一个文件夹或一个项目里面存放所有相关的接口请求。一个好的习惯是为每个微服务或功能模块创建一个集合。APIs这是Postman推出的一个功能旨在将API设计与文档编写集成进来你可以在这里用规范如OpenAPI来设计API并同步生成集合。对于初学者可以先从Collections入手。Environments环境这是实现配置切换的魔法钥匙。一个环境就是一组键值对变量。比如你可以创建“开发环境”、“测试环境”、“生产环境”每个环境里定义不同的base_url如dev.api.com,test.api.com。这样同一个接口请求只需切换环境就会自动使用对应的域名无需手动修改每个请求的URL。Mock ServersMock服务器当你需要前端开发时后端接口还没好就可以用这个功能快速创建一个模拟服务器返回预设的响应数据。Monitors监视器可以定时运行你的集合自动化测试用于接口健康检查或持续集成。History历史你发送过的所有请求记录方便回溯。中间最大的区域是请求构建器和响应查看器这是我们最常操作的地方。顶部是请求方法GET, POST等、URL输入框和“Send”按钮。下方是标签页形式的配置区Params用于编写URL查询参数即?keyvalue部分会动态更新到上面的URL中。Authorization配置请求的认证信息如Bearer Token、Basic Auth等。这是接口测试的常见卡点。Headers设置HTTP请求头如Content-Type: application/json。Body重中之重用于构建请求体。根据Content-Type的不同有几种模式form-data用于上传文件或提交表单会生成multipart/form-data格式。x-www-form-urlencoded标准的表单提交格式。raw最常用的模式可以输入纯文本、JSON、XML等。关于“postman raw如何上传文件”这里有个关键点在raw模式下你无法直接上传二进制文件。raw是传输原始文本的。上传文件必须在form-data或binary模式下进行。在form-data模式下你添加一个字段类型选择“File”然后就能从本机选择文件了。binary用于上传单个二进制文件如图片、PDF。Pre-request Script和Tests这是Postman进阶功能的精华我们后面会详细讲。前者在发送请求前执行常用于生成签名、设置变量后者在收到响应后执行用于断言测试、提取数据。右侧是响应区域展示状态码、响应时间、响应头和响应体。响应体也有多种格式预览Pretty Raw Preview等对于JSON和HTML尤其友好。2.3 汉化与界面语言设置对于中文用户“postman汉化”或“postman怎么设置中文”是个高频需求。Postman原生支持多语言设置非常简单点击右上角的设置Settings图标 - 在“General”选项卡中找到“Language”下拉菜单 - 选择“简体中文” - 重启Postman即可生效。网上流传的“postman汉化包”通常是针对旧版本的民间方法对于新版官方已支持中文的Postman来说不再需要且可能存在风险请直接使用内置设置。3. 核心工作流实战从单个请求到接口关联理解了界面我们开始实战。接口测试不是孤立地发一个请求看看而是一套有逻辑的工作流。3.1 创建你的第一个请求与解读响应我们从一个最简单的公开API开始比如获取IP信息的接口GET https://api.ipify.org?formatjson。点击左上角的“”号新建一个请求标签页。在方法下拉框选择“GET”。在URL地址栏输入https://api.ipify.org。切换到“Params”页签在“Key”列输入format在“Value”列输入json。你会发现上面的URL自动变成了https://api.ipify.org?formatjson。这就是Params的作用。点击蓝色的“Send”按钮。几秒钟后响应区域会显示状态码200 OK响应体里应该是一段JSON如{ip:你的公网IP}。恭喜你完成了第一个接口测试这个过程看似简单但包含了接口测试的基本要素方法、URL、参数、发送、查看响应。深入解读响应除了看返回的IP对不对一个专业的测试者会关注更多Status Code (状态码)200表示成功。但你也必须熟悉400 Bad Request客户端请求错误、401 Unauthorized未认证、404 Not Found资源不存在、500 Internal Server Error服务器内部错误等常见状态码。你提到的“bad request this combination of host and port requires tls.”就是一个典型的400错误我们稍后专门讲。Time响应时间是性能的一个直观指标。Headers (响应头)这里可能包含重要的信息如Content-Type告诉你怎么解析响应体Set-Cookie用于会话保持Authorization相关字段等。Body (响应体)核心数据。Postman会自动格式化JSON/XML点击折叠箭头可以展开或收起层级非常方便。3.2 处理复杂请求POST、Body与文件上传GET请求通常用于获取数据参数在URL里。而创建、更新数据更多用POST、PUT等方法数据放在请求体Body中。场景测试一个用户登录接口。假设接口为POST /api/v1/login接受JSON格式数据{username: testuser, password: 123456}。新建请求方法选“POST”URL填完整地址如http://your-dev-api.com/api/v1/login。在“Headers”页签添加一个头Key为Content-TypeValue为application/json。这一步非常重要它告诉服务器你发送的是JSON格式。切换到“Body”页签选择“raw”然后在右侧格式下拉菜单中选择“JSON”。在下方的大文本框中输入JSON对象{username: testuser, password: 123456}。点击“Send”。如果登录成功响应体里可能会返回一个token比如{code: 0, data: {token: eyJhbGciOiJ...}}。这个token就是后续请求的“通行证”。关于文件上传 当接口需要上传图片、文档时就需要用到form-data模式。在“Body”页签选择“form-data”。在Key列输入字段名根据接口文档可能是file,avatar,document等。将鼠标悬停在该行右侧你会发现Value列从文本框变成了一个下拉菜单。点击它选择“File”。此时Value列会变成一个“选择文件”的按钮点击它从你的电脑中选择要上传的文件。如果需要同时上传文件和其他字段比如user_id只需在下面新加一行Key填user_idValue填具体的ID值这行的类型保持默认的“Text”即可。3.3 环境与变量实现一套脚本多环境运行这是Postman提升效率最核心的功能之一。想象一下你有开发、测试、预发布三个环境每个环境的域名都不一样。如果没有环境变量你就需要维护三套几乎一模一样的请求每次切换都要手动改URL极易出错。创建环境变量点击左侧导航栏的“Environments”点击“”号创建新环境。给它起个名字比如“Dev Environment”。在下面的变量表中添加一个变量。例如Key为base_urlInitial value和Current value都设置为http://dev-api.yourcompany.com。你还可以添加token、user_id等变量。同样地再创建一个“Test Environment”将base_url的值设为http://test-api.yourcompany.com。在请求中使用变量现在在你的登录请求URL中不要再写死域名了。写成{{base_url}}/api/v1/login。注意变量名要用双大括号{{}}包裹。在右上角的环境选择器默认显示“No Environment”中选择“Dev Environment”。发送请求Postman会自动将{{base_url}}替换为http://dev-api.yourcompany.com。想切换到测试环境只需在环境选择器里点一下换成“Test Environment”再发送请求URL就自动变成了测试环境的地址。一键切换高效无误。变量不仅可以用在URL里还可以用在Headers、Body、甚至测试脚本里。比如在Authorization头里可以这样写Bearer {{access_token}}。3.4 接口关联与参数传递破解“先A后B”的测试场景这是面试常考题也是实际项目中最常见的需求“postman当前接口执行前先执行另外一个接口”和“postman提取参数传给下一个接口”。例如你需要先调用登录接口获取token然后用这个token去调用查询用户信息的接口。Postman通过“Tests”脚本和“集合运行器”来实现。第一步在登录接口的Tests中提取并保存token。在登录请求的“Tests”标签页里我们写一段JavaScript代码来解析响应并把值保存到变量里。// 检查响应状态码是否为200 pm.test(Status code is 200, function () { pm.response.to.have.status(200); }); // 将响应体解析为JSON对象 var jsonData pm.response.json(); // 假设响应结构是 {“code”: 0, “data”: {“token”: “...”}} // 从jsonData中提取token的值 var accessToken jsonData.data.token; // 将提取到的token设置为环境变量或集合变量、全局变量 pm.environment.set(access_token, accessToken); // 保存到当前选中的环境变量中 console.log(Token saved: accessToken);发送登录请求后如果成功这段脚本就会执行把token存入名为access_token的环境变量中。第二步在查询接口中使用这个token。在查询用户信息的请求中去到“Authorization”标签页类型选择“Bearer Token”在Token字段里填入{{access_token}}。这样当这个请求发送时就会自动使用上一步保存的token。如何自动化串联执行单个请求手动触发没问题但我们要的是自动顺序执行。这就需要用到“集合运行器”。将登录请求和查询请求都放在同一个Collection集合下。点击集合右侧的“...”按钮选择“Run collection”。在集合运行器界面你可以看到集合下的所有请求。确保它们的顺序是正确的登录在前查询在后。点击“Run”按钮。Postman就会自动按顺序执行这两个请求。当执行登录请求时Tests脚本会运行并设置变量紧接着执行查询请求时它就能读取到刚刚设置的变量值从而实现接口间的参数传递。这就是一个最简单的自动化测试流程。你可以在此基础上扩展加入更多的断言Tests形成一个完整的测试用例集。4. 进阶技巧与高频问题排雷掌握了基础工作流你已经能应对80%的日常场景。剩下的20%则需要一些进阶知识和问题排查能力。4.1 编写有效的测试脚本TestsTests脚本不仅仅是提取数据更重要的是进行自动化断言这才是“测试”的核心。Postman内置了基于Chai断言库的语法写起来很直观。// 1. 断言状态码 pm.test(Status code is 200, function () { pm.response.to.have.status(200); }); // 2. 断言响应体包含某个字符串 pm.test(Body contains success message, function () { pm.expect(pm.response.text()).to.include(success); }); // 3. 断言JSON响应中的某个字段值 pm.test(Response has correct user id, function () { var jsonData pm.response.json(); pm.expect(jsonData.data.user_id).to.eql(12345); // .eql 是深度相等 }); // 4. 断言响应时间在合理范围内 pm.test(Response time is less than 500ms, function () { pm.expect(pm.response.responseTime).to.be.below(500); }); // 5. 断言响应头包含某个字段 pm.test(Content-Type header is present, function () { pm.response.to.have.header(Content-Type); });每次发送请求后Tests的结果都会在“Test Results”标签页显示通过几个失败几个一目了然。将这些测试脚本保存到请求中当你通过集合运行器批量执行时所有断言都会自动运行并生成测试报告。4.2 解决SSL/TLS证书问题关闭验证的得与失你搜索的“postman关闭ssl验证”是一个很实际的问题。当你测试一个内部开发环境或使用了自签名证书的服务器时Postman可能会报错常见的就是“Error: self signed certificate”或“Bad Request: This combination of host and port requires TLS.”。问题根源Postman以及现代浏览器、curl等工具默认会验证服务器SSL证书的有效性是否由可信机构签发、是否过期、域名是否匹配。内部环境的自签名证书不被信任所以连接被拒绝。解决方案 在Postman的设置中可以临时关闭证书验证但务必理解其安全风险。点击左上角的“File” - “Settings”或者直接点右上角的齿轮图标。打开“Settings”对话框切换到“General”选项卡。向下滚动找到“SSL certificate verification”选项。将其关闭Toggle off。重要警告关闭SSL验证意味着Postman将接受任何证书包括无效或恶意的证书。这会使你的通信面临中间人攻击的风险。因此这绝对只能用于测试内部、非生产、完全可控的环境。一旦测试完成或者需要测试生产环境请务必重新打开这个选项。一个更好的实践是将你的自签名证书导入到系统的受信任根证书库但这需要运维配合步骤也更复杂。4.3 数据驱动与批量测试用CSV文件喂数据如果同一个接口你需要用多组不同的参数比如不同的用户名密码组合去测试难道要手动改几十次Body吗当然不。Postman支持数据驱动测试。准备CSV文件用Excel或文本编辑器创建一个CSV文件第一行是变量名后面行是数据。例如文件login_data.csvusername,password,expected_status user1,pass123,200 user2,wrongpass,401 ,,400在集合中关联数据文件在集合运行器界面在“Data”区域点击“Select File”选择你的CSV文件。在请求中使用变量在请求的Body中将写死的值替换为CSV中的变量名同样用双大括号。例如Body里写{username: “{{username}}”, “password”: “{{password}}”}。在Tests中断言预期结果你可以用data.expected_status来引用CSV中“expected_status”列的值。pm.test(Verify status for user {{username}}, function () { pm.response.to.have.status(pm.iterationData.get(“expected_status”)); // 注意这里用iterationData });运行在集合运行器中设置迭代次数比如等于CSV的行数然后运行。Postman会逐行读取CSV数据代入请求中执行并生成详细的迭代报告。4.4 常见报错与排查思路“Bad Request: This combination of host and port requires TLS.”这个错误明确告诉你服务器期望一个安全的TLS即HTTPS连接但你尝试用HTTP去访问。解决方案将你URL中的http://改为https://。如果服务器端口不是默认的443也需要在URL中指明如https://example.com:8443。“Could not get any response” / “Error: connect ECONNREFUSED”连接被拒绝。检查1) URL是否正确拼写、端口2) 目标服务器是否真的在运行3) 本地网络或防火墙是否阻止了连接4) 如果你用了代理Postman的代理设置是否正确“401 Unauthorized”未授权。这是认证问题。检查1) Authorization配置是否正确Token是否过期2) 如果是Basic Auth用户名密码对不对3) 是否需要在Headers里添加自定义的认证头“404 Not Found”资源未找到。检查1) URL路径是否正确2) 请求方法GET/POST等是否正确有些接口路径相同但方法不同。响应体乱码或解析错误检查响应头的Content-Type。如果服务器返回的是JSON但声明为text/htmlPostman可能无法漂亮地格式化。你可以尝试在“Tests”里用pm.response.json()强行解析或者切换到“Raw”视图查看原始数据。5. 超越基础向自动化与协作演进当你熟练使用单个Postman后应该思考如何将其融入团队和研发流程发挥更大价值。5.1 团队协作与版本管理Postman的Workspace工作区支持邀请团队成员加入。你们可以在同一个集合上协作开发接口用例。任何修改都会有更新记录类似于简易的版本管理。你可以通过“Fork”和“Pull Request”的方式在修改集合时发起评审确保变更可控。这对于保持接口测试用例的及时更新和维护至关重要。5.2 集成到持续集成/持续交付CI/CD流水线这就是“postman持续集成”所指向的领域。Postman提供了一个命令行工具叫“Newman”。你可以将你的集合Collection和环境Environment导出为JSON文件然后在Jenkins、GitLab CI、GitHub Actions等CI/CD工具中使用Newman来运行这些测试。基本步骤在Postman中将你的集合和环境分别导出为JSON文件如my-api-tests.postman_collection.json和dev-env.postman_environment.json。在CI服务器上安装Node.js和Newmannpm install -g newman。在CI的脚本中执行命令newman run my-api-tests.postman_collection.json -e dev-env.postman_environment.json --reporters cli,json --reporter-json-export newman-report.jsonNewman会运行所有测试并生成控制台报告和JSON格式的详细报告。你可以根据测试结果通过/失败来决定是否阻断部署流程。这样每次代码提交或构建时都能自动运行接口测试确保核心功能没有被破坏。5.3 何时考虑其他工具Postman的边界Postman非常强大但它不是万能的。当你的测试场景变得极其复杂或者对性能压测有要求时可能需要其他工具辅助。更复杂的逻辑与数据生成虽然Postman的Pre-request和Tests脚本是JavaScript但毕竟是在沙盒环境中。如果你需要连接数据库准备测试数据、调用其他复杂服务、或者需要更灵活的流程控制编写专门的测试代码使用Python的requestspytest或Java的RestAssured可能更合适。性能压测Postman本身不适合做性能测试。虽然它的“Monitor”可以定时运行但并非为高并发压测设计。这时JMeter或k6是更专业的选择。这也是“jmeter接口测试教程”常被一起搜索的原因。JMeter在模拟大量用户并发、生成压力报告方面是行业标准。API全生命周期管理近年来Apifox、YApi、Swagger等工具在API设计、文档、Mock、测试一体化方面提供了更多选择。例如Apifox在保持Postman大部分核心调试功能的同时在团队API文档同步和Mock规则上更便捷。如果你的团队更看重设计与文档的强一致性可以评估这些工具。说到底工具是为人服务的。Postman以其极低的入门门槛和强大的功能成为了绝大多数人学习接口测试的起点和日常主力工具。理解它的核心概念——集合、环境、变量、脚本——不仅能让你用好Postman这些概念本身也是接口测试乃至自动化测试领域的通用思想会为你学习其他更专业的工具打下坚实的基础。我的建议是先把Postman玩透建立起完整的接口测试思维当你遇到它的能力边界时自然就知道该去寻找什么样的“新武器”了。