0


Postman:Postman高级功能:Postman集合与Runner深入解析

Postman:Postman高级功能:Postman集合与Runner深入解析

在这里插入图片描述

Postman集合基础

创建和管理Postman集合

在Postman中,集合是组织和管理API请求的强大工具。它允许你将多个请求分组,以便于测试、调试和共享。创建和管理集合是Postman高级功能的基础,下面是如何操作的步骤:

  1. 创建集合:- 打开Postman应用。- 在左侧边栏中,点击“+”图标创建一个新的集合。- 输入集合名称,例如“用户API测试”。- 点击“创建”按钮。
  2. 添加请求到集合:- 在新创建的集合下,点击“+”添加请求。- 输入请求的URL、方法(GET、POST等)和任何必要的参数或头信息。- 保存请求。
  3. 管理集合:- 可以在集合中添加、编辑或删除请求。- 使用“导入”功能,可以从JSON文件或链接导入现有的集合。- 使用“导出”功能,可以将集合导出为JSON文件,便于备份或与团队成员共享。
  4. 运行集合:- 选择一个集合,点击顶部的“Runner”按钮。- 在Runner中,选择要运行的集合和请求,设置运行次数和延迟时间。- 点击“运行”开始测试。
  5. 共享集合:- 在集合的“共享”选项中,可以生成共享链接或邀请团队成员。- 也可以将集合发布到Postman公共工作空间,供他人使用。

理解集合中的请求和环境变量

Postman集合中的请求可以包含动态数据,如环境变量和全局变量,这些变量在运行集合时可以自动替换,提供更灵活的测试环境。

环境变量

环境变量是Postman中用于存储和管理测试数据的特性。它们可以被多个请求共享,用于动态生成URL、请求头或请求体中的数据。

创建环境变量
  1. - Postman中,点击“管理器”(Manager)。
  2. - 选择“环境”(Environments)。
  3. - 点击“+”创建新环境。
  4. - 输入环境名称,例如“开发环境”。
  5. - 添加变量,例如`baseUrl`,并设置其值为`https://dev.example.com/api`
使用环境变量

在请求的URL中,你可以使用双花括号

  1. {{}}

来引用环境变量:

  1. GET {{baseUrl}}/users

全局变量

全局变量与环境变量类似,但它们在所有环境中都可用,适用于所有集合和请求。

创建全局变量
  1. - 在“管理器”中,选择“全局变量”(Globals)。
  2. - 点击“+”添加新变量。
  3. - 输入变量名称和值。
使用全局变量

使用方法与环境变量相同,但全局变量在所有环境中都可访问。

使用集合进行API测试

Postman集合不仅可以用于发送请求,还可以用于自动化API测试。通过编写预请求脚本和测试脚本,你可以确保API按预期工作。

预请求脚本

预请求脚本在发送请求之前运行,可以用来设置动态数据或执行一些初始化操作。

示例

假设你有一个需要认证的API,你可以使用预请求脚本来生成一个JWT令牌:

  1. // 预请求脚本示例
  2. pm.environment.set("token","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c");

测试脚本

测试脚本在请求响应后运行,用于验证API的响应是否符合预期。

示例

验证API返回的状态码是否为200:

  1. // 测试脚本示例
  2. pm.test("Status code is 200",function(){
  3. pm.response.to.have.status(200);});

验证响应体中是否包含特定数据:

  1. // 测试脚本示例
  2. pm.test("Body contains text",function(){
  3. pm.expect(pm.response.text()).to.include("Hello");});

通过这些步骤和示例,你可以开始在Postman中创建和管理集合,使用环境变量和全局变量,以及编写预请求脚本和测试脚本来自动化API测试。这将大大提高你的测试效率和准确性。

Postman Runner详解

Runner的基本概念和使用

在Postman中,Runner是一个强大的工具,用于批量执行请求集合,特别适合自动化测试和API性能测试。它允许你运行整个集合,或者集合中的特定请求,同时可以设置运行次数和环境变量,以满足不同的测试需求。

基本使用步骤

  1. 选择Runner:在Postman中,点击顶部菜单的“Runner”选项。
  2. 加载集合:选择你想要运行的集合,可以从你的Postman工作空间中选择。
  3. 设置运行参数:定义运行次数、选择环境、设置延迟时间等。
  4. 执行Runner:点击“Start”按钮开始运行。
  5. 查看结果:运行结束后,Runner会提供详细的测试结果和日志,包括每个请求的状态、响应时间、错误信息等。

通过Runner执行集合

配置Runner

  1. - **选择集合**:在Runner界面,从下拉菜单中选择你的集合。
  2. - **设置迭代次数**:在“Number of iterations”字段中输入你想要运行的次数。
  3. - **选择环境**:在“Environment”下拉菜单中选择你的环境,这将决定哪些环境变量被使用。
  4. - **设置延迟**:在“Delay between requests”字段中输入延迟时间,单位为毫秒。

运行示例

假设我们有一个名为“User API”的集合,包含以下请求:

  • GET /users
  • POST /users
  • PUT /users/:id
  • DELETE /users/:id

我们想要在“Development”环境下运行这个集合10次,每次请求之间有500毫秒的延迟。

  1. 加载“User API”集合
  2. 设置迭代次数为10
  3. 选择“Development”环境
  4. 设置延迟时间为500毫秒
  5. 点击“Start”按钮

分析Runner测试结果和日志

测试结果概览

Runner运行结束后,会显示一个测试结果概览,包括:

  • 请求总数:运行的总请求次数。
  • 通过/失败:成功和失败的请求数量。
  • 平均响应时间:所有请求的平均响应时间。
  • 错误详情:列出所有失败的请求及其错误信息。

日志分析

日志部分提供了每个请求的详细信息,包括:

  • 请求方法和URL:每个请求的HTTP方法和URL。
  • 响应状态码:每个请求的HTTP响应状态码。
  • 响应时间:每个请求的响应时间。
  • 错误信息:如果请求失败,会显示错误信息。

示例:分析失败的请求

假设在Runner运行过程中,

  1. DELETE /users/:id

请求失败了,日志中会显示:

这可以帮助你快速定位问题,例如,用户ID可能不存在,或者API的DELETE方法有bug。


通过以上步骤和示例,你可以深入理解如何使用Postman Runner来执行集合,以及如何分析测试结果和日志,以确保API的稳定性和性能。

Postman 高级集合功能深入解析

集合排序与请求依赖

在Postman中,集合不仅用于组织请求,还支持请求之间的依赖关系和排序。这在执行一系列相互关联的API测试时尤为重要,例如,一个请求可能依赖于前一个请求的响应结果。Postman通过环境变量和预处理器来实现这一功能。

集合排序

  • 原理:集合中的请求按照它们在列表中的顺序执行。如果需要改变执行顺序,可以通过拖放请求来调整位置。

请求依赖

  • 原理:通过使用Postman的预处理器和测试脚本,可以在请求之间传递数据。预处理器在请求发送前运行,可以设置环境变量;测试脚本在请求响应后运行,可以读取响应数据并将其存储为环境变量,供后续请求使用。
示例:使用
  1. pm.environment.set()

  1. pm.test()

设置和读取环境变量

  1. // 预处理器示例
  2. 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();
  3. pm.environment.set("token", jsonData.token);}});// 测试脚本示例
  4. pm.test("Status code is 200",function(){
  5. pm.response.to.have.status(200);});
  6. pm.test("Response time is less than 200ms",function(){
  7. pm.expect(pm.response.responseTime).to.be.below(200);});
  8. pm.test("Token is set",function(){var jsonData = pm.response.json();
  9. pm.environment.set("token", jsonData.token);});

使用集合模板

Postman集合模板提供了一种快速创建和格式化集合的方法,尤其在需要创建大量相似请求时非常有用。模板可以包含请求的URL、方法、头信息、参数和预处理器等。

原理

  • 模板语法:使用${variable}来引用环境变量,使用{{collectionName}}来引用集合名称等。
示例:创建一个使用模板的集合
  1. 创建环境:在Postman中创建一个环境,例如MyEnvironment,并设置变量base_url
  2. 使用模板:在集合中添加请求,使用模板语法填充URL、头信息等。
  1. // 集合模板示例{"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数据源进行数据驱动测试
  1. 定义集合变量:在集合中定义变量user_idtoken
  2. 上传CSV数据源:在Runner中上传一个包含user_idtoken值的CSV文件。
  3. 执行测试:使用Runner执行集合,每次迭代使用CSV文件中的一行数据。
  1. // 测试脚本示例
  2. pm.test("Status code is 200",function(){
  3. pm.response.to.have.status(200);});
  4. pm.test("Response time is less than 200ms",function(){
  5. 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数据源示例:

  1. user_id,token
  2. 1,eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c
  3. 2,eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzdWIiOiIxMjM0NTY3ODkwIiwibmFtZSI6IkpvaG4gRG9lIiwiaWF0IjoxNTE2MjM5MDIyfQ.SflKxwRJSMeKKF2QT4fwpMeJf36POk6yJV_adQssw5c

通过上述示例和解析,我们可以看到Postman的高级集合功能如何通过集合排序、请求依赖、集合模板和数据驱动测试来增强API测试的效率和灵活性。这些功能的掌握将大大提升测试自动化的能力,确保API的稳定性和可靠性。

Postman Runner 高级用法

Runner中的环境和全局变量管理

在Postman中,环境和全局变量是管理API测试中动态数据的关键工具。环境变量允许你在特定的测试环境中(如开发、测试、生产)存储和使用变量,而全局变量则在整个Postman应用中可用,无论你使用哪个环境。

环境变量

环境变量在Runner中可以通过

  1. pm.environment.set()

  1. pm.environment.get()

函数来设置和获取。例如,如果你需要在不同的环境中测试API,可以使用环境变量来存储URL、端口或其他关键信息。

  1. // 设置环境变量
  2. pm.environment.set("API_URL","https://api.example.com");// 获取环境变量const apiUrl = pm.environment.get("API_URL");

全局变量

全局变量在Runner中通过

  1. pm.globals.set()

  1. pm.globals.get()

函数来管理。它们可以跨环境使用,适用于需要在多个测试中共享的数据。

  1. // 设置全局变量
  2. pm.globals.set("token","eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9...");// 获取全局变量const token = pm.globals.get("token");

示例:使用环境和全局变量进行API测试

假设你正在测试一个需要认证的API,你可以使用环境变量来存储API的URL,使用全局变量来存储认证令牌。

  1. // 测试前设置环境变量
  2. pm.environment.set("API_URL","https://api.example.com");// 在测试中获取环境变量并使用const apiUrl = pm.environment.get("API_URL");const requestUrl =`${apiUrl}/users`;// 发送请求并设置全局变量
  3. 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){// 如果请求成功,更新全局变量
  4. pm.globals.set("token", res.json().token);}});

使用Runner进行性能测试

Postman Runner不仅可以用于功能测试,还可以用于性能测试。通过Runner,你可以模拟大量并发请求,评估API的响应时间和稳定性。

设置并发请求

在Runner中,你可以通过设置

  1. iterations

  1. delay

参数来控制请求的次数和延迟时间,但要进行性能测试,你需要使用外部工具或Postman的Pro版本以上的功能,如New Relic或Postman的监控功能。

示例:使用Runner进行简单的性能测试

以下是一个简单的示例,展示如何使用Runner发送多个请求并记录响应时间。

  1. // 设置迭代次数const iterations =100;// 发送请求并记录响应时间for(let i =0; i < iterations; i++){
  2. pm.sendRequest({url:"https://api.example.com/data",method:"GET"},function(err, res){if(!err){// 记录响应时间
  3. console.log(`Request ${i +1}: Response time - ${res.responseTime}ms`);}});}

Runner测试报告和导出

Postman Runner可以生成详细的测试报告,帮助你分析测试结果。这些报告可以导出为多种格式,如HTML、JSON或CSV,便于进一步分析或分享给团队成员。

生成测试报告

在Runner中,测试报告自动在测试执行后生成,显示每个请求的状态、响应时间、测试脚本的输出等信息。

导出测试报告

要导出测试报告,你可以在测试执行完成后,点击“Export”按钮,选择你想要的格式进行导出。

示例:分析和导出测试报告

假设你已经执行了一个包含多个请求的测试,现在想要分析响应时间并导出报告。

  1. // 分析响应时间
  2. pm.test("Response time is less than 200ms",function(){
  3. pm.expect(pm.response.responseTime).to.be.below(200);});// 测试执行后,导出报告// 在Postman界面中,点击“Export”按钮,选择格式

通过以上示例和解析,你已经了解了如何在Postman Runner中管理环境和全局变量,如何进行性能测试,以及如何生成和导出测试报告。这些高级功能将帮助你更有效地测试和优化API。

集合与Runner的集成应用

在团队中共享和协作Postman集合

共享Postman集合

在Postman中,集合是组织和管理API请求的有力工具。它们允许你将多个请求分组在一起,形成一个逻辑上相关的单元。这对于测试API的整个流程、构建文档或演示API的功能特别有用。

如何共享集合
  1. 创建集合:首先,在Postman中创建一个包含所有相关请求的集合。
  2. 导出集合:使用“Export”功能将集合导出为JSON文件。这可以确保集合的完整结构,包括请求、环境和变量,都被保存。
  3. 使用Postman API或CLI导入集合:将导出的JSON文件通过Postman API或CLI导入到团队的Postman账户中,确保所有团队成员都能访问。
示例

假设你有一个名为“User API”的集合,包含以下请求:

  • GET /users
  • POST /users
  • PUT /users/:id
  • DELETE /users/:id

你可以通过以下步骤共享这个集合:

  1. 在Postman中选择“User API”集合。
  2. 点击“Export”按钮,选择“Collection”格式,然后导出。
  3. 将生成的JSON文件通过电子邮件或团队协作工具发送给团队成员。
  4. 指导团队成员登录Postman,选择“Import”按钮,从JSON文件导入集合。

协作Postman集合

Postman的协作功能允许团队成员在集合上进行实时协作,无需通过文件传输。这包括添加、编辑和删除请求,以及评论和讨论。

如何协作
  1. 创建团队:在Postman中创建一个团队,邀请所有相关成员加入。
  2. 共享集合到团队:将你的集合共享到团队中,这样所有成员都可以访问和编辑。
  3. 设置权限:为每个成员设置适当的权限,确保只有授权的人员可以编辑集合。
示例

假设你正在开发一个电商API,团队中有开发人员、测试人员和产品经理。你可以:

  1. 创建一个名为“E-commerce API Team”的团队。
  2. 将“Product API”和“Order API”集合共享到这个团队。
  3. 为开发人员设置“编辑”权限,为测试人员和产品经理设置“查看”权限。

使用Runner自动化团队的API测试流程

什么是Runner

Postman Runner是一个强大的工具,用于自动化执行Postman集合中的请求。它允许你批量运行测试,收集结果,并生成详细的测试报告。这对于持续集成和持续部署(CI/CD)流程特别有用。

如何使用Runner
  1. 选择集合:在Postman中选择你想要自动化的集合。
  2. 配置Runner:设置Runner的参数,如迭代次数、环境和测试脚本。
  3. 运行测试:点击“Runner”按钮,开始执行测试。
  4. 查看报告:测试完成后,Runner会生成一个报告,显示测试结果、响应时间和任何失败的测试。
示例

假设你有一个名为“Payment Gateway”的集合,包含以下请求:

  • POST /transactions
  • GET /transactions/:id
  • PUT /transactions/:id
  • DELETE /transactions/:id

你可以使用以下步骤自动化测试:

  1. 在Postman中打开“Payment Gateway”集合。
  2. 点击“Runner”按钮,选择你的集合。
  3. 设置迭代次数为10,选择“Production”环境。
  4. 运行测试,然后查看生成的报告,检查所有请求是否按预期工作。

集成Runner与CI/CD管道

为什么集成

将Postman Runner集成到CI/CD管道中,可以确保每次代码更改后,API的完整功能和性能都得到测试。这有助于早期发现和修复问题,提高软件质量。

如何集成
  1. 配置CI/CD工具:在你的CI/CD工具(如Jenkins、Travis CI或GitLab CI)中配置Postman Runner的执行。
  2. 使用Postman API:通过Postman API调用Runner,执行测试。
  3. 分析测试结果:在CI/CD管道中分析测试结果,确保所有测试都通过。
示例

假设你使用Jenkins作为CI/CD工具,可以按照以下步骤集成Postman Runner:

  1. 在Jenkins中创建一个新的构建任务。
  2. 在构建步骤中,添加一个“Execute shell”命令,调用Postman CLI执行Runner。
  3. 使用以下命令示例:#!/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格式的测试报告。
  4. 在Jenkins中配置测试报告分析,确保每次构建后都检查测试结果。

通过以上步骤,你可以在每次代码提交后自动运行API测试,确保API的稳定性和可靠性。


以上内容详细介绍了如何在团队中共享和协作Postman集合,如何使用Runner自动化API测试流程,以及如何将Runner集成到CI/CD管道中。这些步骤将帮助你的团队更高效地测试和部署API,提高软件开发的效率和质量。

最佳实践与案例研究

Postman集合和Runner在真实项目中的应用

在实际项目中,Postman 集合与 Runner 的使用可以极大地提升 API 测试的效率和质量。以下是一个具体案例,展示如何在电商项目中使用这些功能。

案例背景

假设我们正在开发一个电商应用,需要测试商品列表、购物车、订单处理等 API 的功能。这些 API 之间存在依赖关系,例如,获取商品列表后,需要将商品添加到购物车,然后从购物车生成订单。

集合设计

在 Postman 中,我们创建一个名为

  1. E-commerce API Testing

的集合,其中包含以下请求:

  1. 获取商品列表 (GET /products)
  2. 添加商品到购物车 (POST /cart)
  3. 生成订单 (POST /orders)

每个请求都包含必要的参数和预期的响应验证。

Runner 使用

为了自动化测试流程,我们使用 Postman Runner 来执行集合中的请求。Runner 允许我们设置循环次数、环境变量、预处理脚本和测试脚本,以确保测试的全面性和准确性。

  1. // Runner预处理脚本示例
  2. pm.environment.set("userId","12345");
  3. pm.environment.set("productId","67890");
  1. // Runner测试脚本示例
  2. pm.test("Order created successfully",function(){
  3. pm.response.to.have.status(201);
  4. pm.response.to.have.jsonBody("{'status': 'success'}");});

通过 Runner,我们可以轻松地执行集合,收集测试结果,并生成详细的测试报告。

优化集合和Runner以提高测试效率

优化 Postman 集合和 Runner 的策略包括:

  1. 使用环境和全局变量:通过设置环境变量,可以避免在多个请求中重复输入相同的值,提高测试效率。
  2. 预处理脚本:在请求发送前执行预处理脚本,可以动态生成请求参数,如随机生成订单 ID。
  3. 测试脚本:使用测试脚本来验证响应,确保 API 的正确性。
  4. 循环和集合变量:在 Runner 中设置循环,可以重复执行请求,同时使用集合变量来测试不同的数据点。
  5. 错误处理:在测试脚本中添加错误处理逻辑,可以自动重试失败的请求或跳过后续依赖的请求。

代码示例

  1. // 预处理脚本:生成随机订单ID
  2. pm.globals.set("orderID", Math.random().toString(36).substring(2,15)+ Math.random().toString(36).substring(2,15));
  1. // 测试脚本:验证订单状态
  2. pm.test("Order status is correct",function(){var jsonData = pm.response.json();
  3. pm.expect(jsonData.status).to.eql("processing");});

常见问题和解决方案

在使用 Postman 集合和 Runner 时,可能会遇到以下常见问题:

  1. 请求顺序错误:确保集合中的请求按照正确的顺序排列,以避免依赖关系问题。
  2. 环境变量未正确设置:检查环境变量是否在所有相关请求中正确引用和使用。
  3. 测试脚本错误:使用 console.log() 来调试测试脚本,确保脚本逻辑正确。
  4. Runner执行失败:检查 Runner 的设置,如循环次数、环境选择等,确保没有配置错误。
  5. API响应不稳定:在测试脚本中添加重试逻辑,或在预处理脚本中生成更稳定的测试数据。

解决方案示例

  1. // 测试脚本:重试失败的请求
  2. pm.test("Retry failed request",function(){if(pm.response.code !==200){
  3. pm.test retries =3;
  4. pm.test retryDelay =1000;// 1秒
  5. pm.test.retry(retries, retryDelay);}});

通过以上案例研究、优化策略和解决方案,可以有效地在实际项目中应用 Postman 集合和 Runner,提高 API 测试的效率和准确性。


本文转载自: https://blog.csdn.net/weixin_42749425/article/details/142409135
版权归原作者 kkchenjj 所有, 如有侵权,请联系我们删除。

“Postman:Postman高级功能:Postman集合与Runner深入解析”的评论:

还没有评论