Postman:Postman高级功能:Postman集合与Runner深入解析
Postman集合基础
创建和管理Postman集合
在Postman中,集合是组织和管理API请求的强大工具。它允许你将多个请求分组,以便于测试、调试和共享。创建和管理集合是Postman高级功能的基础,下面是如何操作的步骤:
- 创建集合:- 打开Postman应用。- 在左侧边栏中,点击“+”图标创建一个新的集合。- 输入集合名称,例如“用户API测试”。- 点击“创建”按钮。
- 添加请求到集合:- 在新创建的集合下,点击“+”添加请求。- 输入请求的URL、方法(GET、POST等)和任何必要的参数或头信息。- 保存请求。
- 管理集合:- 可以在集合中添加、编辑或删除请求。- 使用“导入”功能,可以从JSON文件或链接导入现有的集合。- 使用“导出”功能,可以将集合导出为JSON文件,便于备份或与团队成员共享。
- 运行集合:- 选择一个集合,点击顶部的“Runner”按钮。- 在Runner中,选择要运行的集合和请求,设置运行次数和延迟时间。- 点击“运行”开始测试。
- 共享集合:- 在集合的“共享”选项中,可以生成共享链接或邀请团队成员。- 也可以将集合发布到Postman公共工作空间,供他人使用。
理解集合中的请求和环境变量
Postman集合中的请求可以包含动态数据,如环境变量和全局变量,这些变量在运行集合时可以自动替换,提供更灵活的测试环境。
环境变量
环境变量是Postman中用于存储和管理测试数据的特性。它们可以被多个请求共享,用于动态生成URL、请求头或请求体中的数据。
创建环境变量
- 在Postman中,点击“管理器”(Manager)。
- 选择“环境”(Environments)。
- 点击“+”创建新环境。
- 输入环境名称,例如“开发环境”。
- 添加变量,例如`baseUrl`,并设置其值为`https://dev.example.com/api`。
使用环境变量
在请求的URL中,你可以使用双花括号
{{}}
来引用环境变量:
GET {{baseUrl}}/users
全局变量
全局变量与环境变量类似,但它们在所有环境中都可用,适用于所有集合和请求。
创建全局变量
- 在“管理器”中,选择“全局变量”(Globals)。
- 点击“+”添加新变量。
- 输入变量名称和值。
使用全局变量
使用方法与环境变量相同,但全局变量在所有环境中都可访问。
使用集合进行API测试
Postman集合不仅可以用于发送请求,还可以用于自动化API测试。通过编写预请求脚本和测试脚本,你可以确保API按预期工作。
预请求脚本
预请求脚本在发送请求之前运行,可以用来设置动态数据或执行一些初始化操作。
示例
假设你有一个需要认证的API,你可以使用预请求脚本来生成一个JWT令牌:
// 预请求脚本示例
pm.environment.set("token","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c");
测试脚本
测试脚本在请求响应后运行,用于验证API的响应是否符合预期。
示例
验证API返回的状态码是否为200:
// 测试脚本示例
pm.test("Status code is 200",function(){
pm.response.to.have.status(200);});
验证响应体中是否包含特定数据:
// 测试脚本示例
pm.test("Body contains text",function(){
pm.expect(pm.response.text()).to.include("Hello");});
通过这些步骤和示例,你可以开始在Postman中创建和管理集合,使用环境变量和全局变量,以及编写预请求脚本和测试脚本来自动化API测试。这将大大提高你的测试效率和准确性。
Postman Runner详解
Runner的基本概念和使用
在Postman中,Runner是一个强大的工具,用于批量执行请求集合,特别适合自动化测试和API性能测试。它允许你运行整个集合,或者集合中的特定请求,同时可以设置运行次数和环境变量,以满足不同的测试需求。
基本使用步骤
- 选择Runner:在Postman中,点击顶部菜单的“Runner”选项。
- 加载集合:选择你想要运行的集合,可以从你的Postman工作空间中选择。
- 设置运行参数:定义运行次数、选择环境、设置延迟时间等。
- 执行Runner:点击“Start”按钮开始运行。
- 查看结果:运行结束后,Runner会提供详细的测试结果和日志,包括每个请求的状态、响应时间、错误信息等。
通过Runner执行集合
配置Runner
- **选择集合**:在Runner界面,从下拉菜单中选择你的集合。
- **设置迭代次数**:在“Number of iterations”字段中输入你想要运行的次数。
- **选择环境**:在“Environment”下拉菜单中选择你的环境,这将决定哪些环境变量被使用。
- **设置延迟**:在“Delay between requests”字段中输入延迟时间,单位为毫秒。
运行示例
假设我们有一个名为“User API”的集合,包含以下请求:
GET /users
POST /users
PUT /users/:id
DELETE /users/:id
我们想要在“Development”环境下运行这个集合10次,每次请求之间有500毫秒的延迟。
- 加载“User API”集合。
- 设置迭代次数为10。
- 选择“Development”环境。
- 设置延迟时间为500毫秒。
- 点击“Start”按钮。
分析Runner测试结果和日志
测试结果概览
Runner运行结束后,会显示一个测试结果概览,包括:
- 请求总数:运行的总请求次数。
- 通过/失败:成功和失败的请求数量。
- 平均响应时间:所有请求的平均响应时间。
- 错误详情:列出所有失败的请求及其错误信息。
日志分析
日志部分提供了每个请求的详细信息,包括:
- 请求方法和URL:每个请求的HTTP方法和URL。
- 响应状态码:每个请求的HTTP响应状态码。
- 响应时间:每个请求的响应时间。
- 错误信息:如果请求失败,会显示错误信息。
示例:分析失败的请求
假设在Runner运行过程中,
DELETE /users/:id
请求失败了,日志中会显示:
- 请求方法:DELETE
- URL:http://example.com/users/123
- 状态码:404
- 错误信息:Not Found - User with ID 123 does not exist
这可以帮助你快速定位问题,例如,用户ID可能不存在,或者API的DELETE方法有bug。
通过以上步骤和示例,你可以深入理解如何使用Postman Runner来执行集合,以及如何分析测试结果和日志,以确保API的稳定性和性能。
Postman 高级集合功能深入解析
集合排序与请求依赖
在Postman中,集合不仅用于组织请求,还支持请求之间的依赖关系和排序。这在执行一系列相互关联的API测试时尤为重要,例如,一个请求可能依赖于前一个请求的响应结果。Postman通过环境变量和预处理器来实现这一功能。
集合排序
- 原理:集合中的请求按照它们在列表中的顺序执行。如果需要改变执行顺序,可以通过拖放请求来调整位置。
请求依赖
- 原理:通过使用Postman的预处理器和测试脚本,可以在请求之间传递数据。预处理器在请求发送前运行,可以设置环境变量;测试脚本在请求响应后运行,可以读取响应数据并将其存储为环境变量,供后续请求使用。
示例:使用
pm.environment.set()
和
pm.test()
设置和读取环境变量
// 预处理器示例
pm.sendRequest({url: pm.environment.get("base_url")+"/login",method:"POST",header:{"Content-Type":"application/json"},body:{mode:"raw",raw:JSON.stringify({username:"testuser",password:"testpassword"})}},function(err, res){if(!err){var jsonData = res.json();
pm.environment.set("token", jsonData.token);}});// 测试脚本示例
pm.test("Status code is 200",function(){
pm.response.to.have.status(200);});
pm.test("Response time is less than 200ms",function(){
pm.expect(pm.response.responseTime).to.be.below(200);});
pm.test("Token is set",function(){var jsonData = pm.response.json();
pm.environment.set("token", jsonData.token);});
使用集合模板
Postman集合模板提供了一种快速创建和格式化集合的方法,尤其在需要创建大量相似请求时非常有用。模板可以包含请求的URL、方法、头信息、参数和预处理器等。
原理
- 模板语法:使用
${variable}
来引用环境变量,使用{{collectionName}}
来引用集合名称等。
示例:创建一个使用模板的集合
- 创建环境:在Postman中创建一个环境,例如
MyEnvironment
,并设置变量base_url
。 - 使用模板:在集合中添加请求,使用模板语法填充URL、头信息等。
// 集合模板示例{"name":"API Test Collection","requests":[{"name":"Get User","request":{"url":"{{base_url}}/users/{{user_id}}","method":"GET","header":[{"key":"Authorization","value":"Bearer ${token}"}]}},{"name":"Update User","request":{"url":"{{base_url}}/users/{{user_id}}","method":"PUT","header":[{"key":"Authorization","value":"Bearer ${token}"},{"key":"Content-Type","value":"application/json"}],"body":{"mode":"raw","raw":"{\"name\": \"Updated Name\"}"}}}]}
集合变量和数据驱动测试
Postman允许在集合中定义变量,这些变量可以用于请求的任何部分,包括URL、头信息、参数和预处理器。数据驱动测试则允许使用外部数据源(如CSV文件)来动态填充这些变量,从而执行批量测试。
集合变量
- 定义:在集合的“Variables”部分定义变量。
- 使用:在请求中使用
${variable_name}
来引用变量。
数据驱动测试
- 原理:通过Postman的“Runner”工具,可以上传CSV文件作为数据源,每个数据行将被用作一次测试的输入。
示例:使用集合变量和CSV数据源进行数据驱动测试
- 定义集合变量:在集合中定义变量
user_id
和token
。 - 上传CSV数据源:在Runner中上传一个包含
user_id
和token
值的CSV文件。 - 执行测试:使用Runner执行集合,每次迭代使用CSV文件中的一行数据。
// 测试脚本示例
pm.test("Status code is 200",function(){
pm.response.to.have.status(200);});
pm.test("Response time is less than 200ms",function(){
pm.expect(pm.response.responseTime).to.be.below(200);});// 使用集合变量{"name":"Data-Driven Test","requests":[{"name":"Get User","request":{"url":"{{base_url}}/users/${user_id}","method":"GET","header":[{"key":"Authorization","value":"Bearer ${token}"}]}}]}
CSV数据源示例:
user_id,token
1,eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
2,eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
通过上述示例和解析,我们可以看到Postman的高级集合功能如何通过集合排序、请求依赖、集合模板和数据驱动测试来增强API测试的效率和灵活性。这些功能的掌握将大大提升测试自动化的能力,确保API的稳定性和可靠性。
Postman Runner 高级用法
Runner中的环境和全局变量管理
在Postman中,环境和全局变量是管理API测试中动态数据的关键工具。环境变量允许你在特定的测试环境中(如开发、测试、生产)存储和使用变量,而全局变量则在整个Postman应用中可用,无论你使用哪个环境。
环境变量
环境变量在Runner中可以通过
pm.environment.set()
和
pm.environment.get()
函数来设置和获取。例如,如果你需要在不同的环境中测试API,可以使用环境变量来存储URL、端口或其他关键信息。
// 设置环境变量
pm.environment.set("API_URL","https://api.example.com");// 获取环境变量const apiUrl = pm.environment.get("API_URL");
全局变量
全局变量在Runner中通过
pm.globals.set()
和
pm.globals.get()
函数来管理。它们可以跨环境使用,适用于需要在多个测试中共享的数据。
// 设置全局变量
pm.globals.set("token","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...");// 获取全局变量const token = pm.globals.get("token");
示例:使用环境和全局变量进行API测试
假设你正在测试一个需要认证的API,你可以使用环境变量来存储API的URL,使用全局变量来存储认证令牌。
// 测试前设置环境变量
pm.environment.set("API_URL","https://api.example.com");// 在测试中获取环境变量并使用const apiUrl = pm.environment.get("API_URL");const requestUrl =`${apiUrl}/users`;// 发送请求并设置全局变量
pm.sendRequest({url: requestUrl,method:"POST",header:{"Content-Type":"application/json","Authorization":`Bearer ${pm.globals.get("token")}`},body:JSON.stringify({"name":"John Doe","email":"john.doe@example.com"})},function(err, res){if(!err && res.code ===201){// 如果请求成功,更新全局变量
pm.globals.set("token", res.json().token);}});
使用Runner进行性能测试
Postman Runner不仅可以用于功能测试,还可以用于性能测试。通过Runner,你可以模拟大量并发请求,评估API的响应时间和稳定性。
设置并发请求
在Runner中,你可以通过设置
iterations
和
delay
参数来控制请求的次数和延迟时间,但要进行性能测试,你需要使用外部工具或Postman的Pro版本以上的功能,如New Relic或Postman的监控功能。
示例:使用Runner进行简单的性能测试
以下是一个简单的示例,展示如何使用Runner发送多个请求并记录响应时间。
// 设置迭代次数const iterations =100;// 发送请求并记录响应时间for(let i =0; i < iterations; i++){
pm.sendRequest({url:"https://api.example.com/data",method:"GET"},function(err, res){if(!err){// 记录响应时间
console.log(`Request ${i +1}: Response time - ${res.responseTime}ms`);}});}
Runner测试报告和导出
Postman Runner可以生成详细的测试报告,帮助你分析测试结果。这些报告可以导出为多种格式,如HTML、JSON或CSV,便于进一步分析或分享给团队成员。
生成测试报告
在Runner中,测试报告自动在测试执行后生成,显示每个请求的状态、响应时间、测试脚本的输出等信息。
导出测试报告
要导出测试报告,你可以在测试执行完成后,点击“Export”按钮,选择你想要的格式进行导出。
示例:分析和导出测试报告
假设你已经执行了一个包含多个请求的测试,现在想要分析响应时间并导出报告。
// 分析响应时间
pm.test("Response time is less than 200ms",function(){
pm.expect(pm.response.responseTime).to.be.below(200);});// 测试执行后,导出报告// 在Postman界面中,点击“Export”按钮,选择格式
通过以上示例和解析,你已经了解了如何在Postman Runner中管理环境和全局变量,如何进行性能测试,以及如何生成和导出测试报告。这些高级功能将帮助你更有效地测试和优化API。
集合与Runner的集成应用
在团队中共享和协作Postman集合
共享Postman集合
在Postman中,集合是组织和管理API请求的有力工具。它们允许你将多个请求分组在一起,形成一个逻辑上相关的单元。这对于测试API的整个流程、构建文档或演示API的功能特别有用。
如何共享集合
- 创建集合:首先,在Postman中创建一个包含所有相关请求的集合。
- 导出集合:使用“Export”功能将集合导出为JSON文件。这可以确保集合的完整结构,包括请求、环境和变量,都被保存。
- 使用Postman API或CLI导入集合:将导出的JSON文件通过Postman API或CLI导入到团队的Postman账户中,确保所有团队成员都能访问。
示例
假设你有一个名为“User API”的集合,包含以下请求:
- GET /users
- POST /users
- PUT /users/:id
- DELETE /users/:id
你可以通过以下步骤共享这个集合:
- 在Postman中选择“User API”集合。
- 点击“Export”按钮,选择“Collection”格式,然后导出。
- 将生成的JSON文件通过电子邮件或团队协作工具发送给团队成员。
- 指导团队成员登录Postman,选择“Import”按钮,从JSON文件导入集合。
协作Postman集合
Postman的协作功能允许团队成员在集合上进行实时协作,无需通过文件传输。这包括添加、编辑和删除请求,以及评论和讨论。
如何协作
- 创建团队:在Postman中创建一个团队,邀请所有相关成员加入。
- 共享集合到团队:将你的集合共享到团队中,这样所有成员都可以访问和编辑。
- 设置权限:为每个成员设置适当的权限,确保只有授权的人员可以编辑集合。
示例
假设你正在开发一个电商API,团队中有开发人员、测试人员和产品经理。你可以:
- 创建一个名为“E-commerce API Team”的团队。
- 将“Product API”和“Order API”集合共享到这个团队。
- 为开发人员设置“编辑”权限,为测试人员和产品经理设置“查看”权限。
使用Runner自动化团队的API测试流程
什么是Runner
Postman Runner是一个强大的工具,用于自动化执行Postman集合中的请求。它允许你批量运行测试,收集结果,并生成详细的测试报告。这对于持续集成和持续部署(CI/CD)流程特别有用。
如何使用Runner
- 选择集合:在Postman中选择你想要自动化的集合。
- 配置Runner:设置Runner的参数,如迭代次数、环境和测试脚本。
- 运行测试:点击“Runner”按钮,开始执行测试。
- 查看报告:测试完成后,Runner会生成一个报告,显示测试结果、响应时间和任何失败的测试。
示例
假设你有一个名为“Payment Gateway”的集合,包含以下请求:
- POST /transactions
- GET /transactions/:id
- PUT /transactions/:id
- DELETE /transactions/:id
你可以使用以下步骤自动化测试:
- 在Postman中打开“Payment Gateway”集合。
- 点击“Runner”按钮,选择你的集合。
- 设置迭代次数为10,选择“Production”环境。
- 运行测试,然后查看生成的报告,检查所有请求是否按预期工作。
集成Runner与CI/CD管道
为什么集成
将Postman Runner集成到CI/CD管道中,可以确保每次代码更改后,API的完整功能和性能都得到测试。这有助于早期发现和修复问题,提高软件质量。
如何集成
- 配置CI/CD工具:在你的CI/CD工具(如Jenkins、Travis CI或GitLab CI)中配置Postman Runner的执行。
- 使用Postman API:通过Postman API调用Runner,执行测试。
- 分析测试结果:在CI/CD管道中分析测试结果,确保所有测试都通过。
示例
假设你使用Jenkins作为CI/CD工具,可以按照以下步骤集成Postman Runner:
- 在Jenkins中创建一个新的构建任务。
- 在构建步骤中,添加一个“Execute shell”命令,调用Postman CLI执行Runner。
- 使用以下命令示例:
#!/bin/bashnpx newman run "Payment Gateway Collection.json"--environment"Production Environment.json"--reporters cli,junit --reporter-junit-export "test-results.xml"
这个命令将运行“Payment Gateway Collection.json”集合,使用“Production Environment.json”环境文件,并生成Junit格式的测试报告。 - 在Jenkins中配置测试报告分析,确保每次构建后都检查测试结果。
通过以上步骤,你可以在每次代码提交后自动运行API测试,确保API的稳定性和可靠性。
以上内容详细介绍了如何在团队中共享和协作Postman集合,如何使用Runner自动化API测试流程,以及如何将Runner集成到CI/CD管道中。这些步骤将帮助你的团队更高效地测试和部署API,提高软件开发的效率和质量。
最佳实践与案例研究
Postman集合和Runner在真实项目中的应用
在实际项目中,Postman 集合与 Runner 的使用可以极大地提升 API 测试的效率和质量。以下是一个具体案例,展示如何在电商项目中使用这些功能。
案例背景
假设我们正在开发一个电商应用,需要测试商品列表、购物车、订单处理等 API 的功能。这些 API 之间存在依赖关系,例如,获取商品列表后,需要将商品添加到购物车,然后从购物车生成订单。
集合设计
在 Postman 中,我们创建一个名为
E-commerce API Testing
的集合,其中包含以下请求:
- 获取商品列表 (
GET /products
) - 添加商品到购物车 (
POST /cart
) - 生成订单 (
POST /orders
)
每个请求都包含必要的参数和预期的响应验证。
Runner 使用
为了自动化测试流程,我们使用 Postman Runner 来执行集合中的请求。Runner 允许我们设置循环次数、环境变量、预处理脚本和测试脚本,以确保测试的全面性和准确性。
// Runner预处理脚本示例
pm.environment.set("userId","12345");
pm.environment.set("productId","67890");
// Runner测试脚本示例
pm.test("Order created successfully",function(){
pm.response.to.have.status(201);
pm.response.to.have.jsonBody("{'status': 'success'}");});
通过 Runner,我们可以轻松地执行集合,收集测试结果,并生成详细的测试报告。
优化集合和Runner以提高测试效率
优化 Postman 集合和 Runner 的策略包括:
- 使用环境和全局变量:通过设置环境变量,可以避免在多个请求中重复输入相同的值,提高测试效率。
- 预处理脚本:在请求发送前执行预处理脚本,可以动态生成请求参数,如随机生成订单 ID。
- 测试脚本:使用测试脚本来验证响应,确保 API 的正确性。
- 循环和集合变量:在 Runner 中设置循环,可以重复执行请求,同时使用集合变量来测试不同的数据点。
- 错误处理:在测试脚本中添加错误处理逻辑,可以自动重试失败的请求或跳过后续依赖的请求。
代码示例
// 预处理脚本:生成随机订单ID
pm.globals.set("orderID", Math.random().toString(36).substring(2,15)+ Math.random().toString(36).substring(2,15));
// 测试脚本:验证订单状态
pm.test("Order status is correct",function(){var jsonData = pm.response.json();
pm.expect(jsonData.status).to.eql("processing");});
常见问题和解决方案
在使用 Postman 集合和 Runner 时,可能会遇到以下常见问题:
- 请求顺序错误:确保集合中的请求按照正确的顺序排列,以避免依赖关系问题。
- 环境变量未正确设置:检查环境变量是否在所有相关请求中正确引用和使用。
- 测试脚本错误:使用
console.log()
来调试测试脚本,确保脚本逻辑正确。 - Runner执行失败:检查 Runner 的设置,如循环次数、环境选择等,确保没有配置错误。
- API响应不稳定:在测试脚本中添加重试逻辑,或在预处理脚本中生成更稳定的测试数据。
解决方案示例
// 测试脚本:重试失败的请求
pm.test("Retry failed request",function(){if(pm.response.code !==200){
pm.test retries =3;
pm.test retryDelay =1000;// 1秒
pm.test.retry(retries, retryDelay);}});
通过以上案例研究、优化策略和解决方案,可以有效地在实际项目中应用 Postman 集合和 Runner,提高 API 测试的效率和准确性。
版权归原作者 kkchenjj 所有, 如有侵权,请联系我们删除。