Postman:Postman简介:Postman自动化测试与Newman

在这里插入图片描述

Postman简介

Postman的功能与优势

Postman是一款强大的API开发工具,它不仅简化了API的测试过程,还提供了丰富的功能来支持API的开发、调试、修改和发布。以下是Postman的一些主要功能和优势:

  1. API测试:Postman允许你构建测试来验证API的响应是否符合预期,包括数据结构、状态码等。

  2. 环境变量:可以设置和管理环境变量,使得在不同的测试环境中(如开发、测试、生产)可以轻松切换,无需手动修改请求的URL或参数。

  3. 集合:集合功能可以将多个请求组织在一起,方便管理和共享。这对于API的测试和文档化特别有用。

  4. 预请求脚本和测试脚本:使用JavaScript编写预请求脚本和测试脚本,可以在发送请求前或接收响应后执行自定义的代码,增加了测试的灵活性和深度。

  5. 自动化测试:通过集成Newman,Postman可以运行自动化测试,这对于持续集成/持续部署(CI/CD)流程至关重要。

  6. 监控:可以设置监控,定期检查API的健康状况,确保API的稳定性和可靠性。

  7. 文档生成:Postman可以自动生成API文档,这对于团队协作和API的推广非常有帮助。

  8. 团队协作:Postman支持团队协作,可以共享集合、环境和文档,使得团队成员可以协同工作,提高开发效率。

Postman的安装与基本使用

安装Postman

  1. 访问Postman的官方网站(https://www.postman.com/)。
  2. 选择适合你的操作系统的版本进行下载。
  3. 安装程序并按照提示完成安装。

基本使用

创建请求
  1. 打开Postman,选择左上角的+按钮创建一个新的请求。
  2. 选择请求类型(GET、POST、PUT等)。
  3. 输入请求的URL。
  4. 在请求头(Headers)中添加必要的头信息,如Content-Type。
  5. 在请求体(Body)中输入请求数据,对于POST请求,可以选择raw模式并输入JSON数据。
// 示例:发送一个POST请求
{
  "key": "value",
  "anotherKey": "anotherValue"
}
发送请求
  1. 点击Send按钮发送请求。
  2. 观察响应状态码和响应体,以验证API是否按预期工作。
使用集合
  1. 点击左侧面板的Collections,选择Create Collection创建一个新的集合。
  2. 将请求拖入集合中,或者在请求界面点击Add to Collection按钮。
  3. 可以在集合中组织和管理多个请求,方便进行批量测试或分享给团队成员。
运行自动化测试
  1. 安装Newman,一个Postman的命令行集合运行器,可以在CI/CD流程中使用。
  2. 使用Newman运行Postman集合,例如:
newman run <collection_name> -e <environment_name>

这里,<collection_name>是你的Postman集合的名称,-e参数后跟的是环境名称,用于指定运行测试的环境。

管理环境变量
  1. 在Postman中,选择Manage Environments。
  2. 创建一个新的环境,例如development、testing或production。
  3. 在环境中设置变量,如API的URL、认证信息等。
  4. 在请求中使用这些环境变量,例如:
pm.environment.set("apiUrl", "https://api.example.com");
生成API文档
  1. 选择一个集合,点击Export按钮。
  2. 选择Documentation格式,Postman将自动生成API文档。

结论

Postman是一款功能全面的API开发工具,它简化了API的测试和开发过程,提供了自动化测试、环境管理、文档生成等高级功能,是API开发和测试的首选工具。通过熟练掌握Postman的使用,可以显著提高API开发的效率和质量。

Postman自动化测试

创建自动化测试集合

在Postman中,自动化测试集合是通过将一系列请求组织在一起,形成一个可以重复执行的测试流程。这有助于确保API的稳定性和可靠性,特别是在进行持续集成和持续部署(CI/CD)时。

步骤1:创建集合

  1. 打开Postman,点击左侧菜单的Collections。
  2. 选择New来创建一个新的集合。
  3. 命名集合,例如Automation Test Suite。

步骤2:添加请求

在集合中添加请求,每个请求代表与API的一次交互。例如,对于一个用户登录功能,你可能需要创建以下请求:

  • GET /users
  • POST /users/login

步骤3:编写测试脚本

在每个请求中,可以编写测试脚本来验证API的响应。使用Postman的Tests脚本编辑器,可以编写JavaScript代码来执行这些验证。

示例:验证登录请求
// 获取响应体
const responseJson = pm.response.json();

// 验证响应状态码
pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

// 验证响应中包含特定的字段
pm.test("Response contains 'token'", function () {
    pm.expect(responseJson).to.have.property('token');
});

使用预设和环境变量

预设和环境变量允许你在测试中使用动态数据,这对于自动化测试特别有用,因为它们可以让你的测试更加灵活和可重复。

预设

预设(Globals)是Postman中存储全局变量的地方,这些变量在整个Postman应用中都是可用的。

环境变量

环境变量(Environment Variables)则是在特定的环境中存储变量,这些变量只在该环境中可用。

示例:使用环境变量

假设你有一个API的URL,你希望在不同的环境中(如开发、测试、生产)使用不同的URL,可以这样设置:

  1. 在Postman中,点击Manage Environments。
  2. 创建一个环境,例如Development。
  3. 在该环境中添加一个变量API_URL,并设置其值为https://dev.example.com/api。

然后,在请求中,你可以使用{{API_URL}}来引用这个环境变量。

编写测试脚本

测试脚本是Postman自动化测试的核心,它们用于验证API的响应是否符合预期。使用JavaScript编写这些脚本,可以进行复杂的逻辑验证。

示例:验证响应时间

pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

示例:验证JSON响应结构

pm.test("Response has correct JSON structure", function () {
    const responseJson = pm.response.json();
    pm.expect(responseJson).to.have.all.keys('id', 'name', 'email');
});

运行测试并查看结果

一旦测试集合和脚本准备就绪,你就可以运行测试并查看结果了。

步骤1:选择集合

在Postman中,选择你想要运行的测试集合。

步骤2:运行测试

点击Runner,然后选择你的集合,设置运行次数和环境,最后点击Run。

步骤3:查看结果

测试运行后,你可以在Runner的Results标签下查看测试结果。这里会显示每个请求的测试结果,包括通过、失败和任何错误信息。

示例:使用Newman运行测试

Newman是一个Postman集合运行器,可以在命令行中运行Postman集合,非常适合CI/CD流程。

newman run "Automation Test Suite" -e "Development" -r cli

在这个命令中:

  • "Automation Test Suite"是你的集合名称。
  • -e "Development"指定了运行的环境。
  • -r cli表示输出格式为命令行界面。

通过以上步骤,你可以在Postman中创建和运行自动化测试集合,使用预设和环境变量来管理动态数据,编写测试脚本来验证API的响应,最后使用Newman在CI/CD流程中运行这些测试。这不仅提高了测试的效率,也确保了API的稳定性和可靠性。

Newman简介

Newman的功能与用途

Newman 是一个命令行集合运行器,用于 Postman 集合。它允许您在无头环境中运行 Postman 集合,例如持续集成(CI)服务器、脚本或任何其他非交互式环境。Newman 的主要功能包括:

  • 自动化测试:在构建、测试或部署过程中自动运行 Postman 集合,无需手动操作。
  • 持续集成:与 CI/CD 工具(如 Jenkins、Travis CI、CircleCI 等)集成,确保每次代码更改后都能自动测试 API。
  • 环境变量:支持使用环境变量,使集合能够在不同的环境中运行,例如开发、测试和生产。
  • 报告生成:生成详细的测试报告,包括测试结果、响应时间、失败的测试等,便于分析和调试。
  • 并行执行:能够并行运行多个集合,提高测试效率。

示例:使用 Newman 运行 Postman 集合

假设我们有一个 Postman 集合,名为 API-Tests.postman_collection.json,我们想要在 Jenkins 服务器上自动运行这个集合。以下是如何使用 Newman 运行集合的示例:

newman run API-Tests.postman_collection.json --environment environment_variables.json --reporters cli,html --reporter-html-export test-report.html

在这个命令中:

  • API-Tests.postman_collection.json 是 Postman 集合的文件。
  • --environment environment_variables.json 指定了一个环境变量文件,用于在测试中使用。
  • --reporters cli,html 指定了报告的类型,这里我们选择了命令行和 HTML 报告。
  • --reporter-html-export test-report.html 指定了 HTML 报告的输出文件。

Newman的安装与配置

Newman 可以通过 npm(Node.js 包管理器)安装。以下是安装和配置 Newman 的步骤:

安装 Newman

在您的计算机上,打开终端或命令提示符,运行以下命令来全局安装 Newman:

npm install -g newman

配置 Newman

配置 Newman 主要涉及设置环境变量和报告器。环境变量用于在不同的环境中运行集合,例如开发和生产环境。报告器用于生成测试结果的报告。

环境变量配置

环境变量通常存储在 JSON 文件中。以下是一个环境变量文件的示例:

{
    "values": [
        {
            "key": "base_url",
            "value": "https://api.example.com",
            "enabled": true
        },
        {
            "key": "api_key",
            "value": "1234567890",
            "enabled": true
        }
    ]
}

在这个文件中,base_url 和 api_key 是两个环境变量,它们在运行集合时会被使用。

报告器配置

Newman 支持多种报告器,包括命令行、JSON、HTML 和 Markdown。以下是如何配置 HTML 报告器的示例:

newman run API-Tests.postman_collection.json --reporters cli,html --reporter-html-export test-report.html

在这个命令中,--reporters cli,html 指定了使用命令行和 HTML 报告器。--reporter-html-export test-report.html 指定了 HTML 报告的输出文件。

运行 Newman

一旦安装并配置了 Newman,您就可以运行它来测试您的 Postman 集合。以下是一个运行 Newman 的示例命令:

newman run API-Tests.postman_collection.json --environment environment_variables.json --reporters cli,html --reporter-html-export test-report.html

在这个命令中,我们指定了集合文件、环境变量文件、报告器类型以及报告的输出文件。运行这个命令后,Newman 将会自动执行集合中的所有请求,并生成测试报告。

Newman与CI/CD集成

Newman 可以轻松地与 CI/CD 工具集成。例如,在 Jenkins 中,您可以创建一个新的构建任务,并在构建步骤中添加一个 shell 命令,如下所示:

pipeline {
    agent any
    stages {
        stage('Run API Tests') {
            steps {
                sh 'newman run API-Tests.postman_collection.json --environment environment_variables.json --reporters cli,html --reporter-html-export test-report.html'
            }
        }
    }
}

在这个 Jenkinsfile 中,我们定义了一个名为 Run API Tests 的阶段,其中包含一个 shell 命令,用于运行 Newman。这样,每当代码更改并触发构建时,Newman 将会自动运行 API 测试集合。

通过以上步骤,您可以有效地使用 Newman 来自动化您的 Postman 集合测试,确保您的 API 在每次代码更改后都能正常工作。

使用Newman进行自动化测试

从Postman导出集合

在开始自动化测试之前,首先需要从Postman中导出你的API测试集合。Postman集合是一种组织和管理API请求的方式,它允许你将多个请求分组,以便于测试和分享。Newman能够读取这些集合,并在非交互式的环境中运行它们,非常适合CI/CD流程。

步骤1: 创建或选择集合

在Postman中,创建一个包含你想要自动化的API请求的集合。确保每个请求都包含了所有必要的参数,如URL、方法、头信息和请求体。

步骤2: 导出集合

  1. 打开你的集合。
  2. 点击右上角的“…”按钮。
  3. 选择“Export”。
  4. 选择“Collection v2.1 Format”并导出。

示例

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

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

导出的集合文件可能看起来像这样:

{
  "info": {
    "_postman_id": "example-uuid",
    "name": "User API",
    "description": "A collection of tests for the User API",
    "schema": "https://schema.getpostman.com/json/collection/v2.1.0/collection.json"
  },
  "item": [
    {
      "name": "GET users",
      "request": {
        "method": "GET",
        "url": "{{base_url}}/users",
        "header": []
      },
      "response": []
    },
    {
      "name": "POST users",
      "request": {
        "method": "POST",
        "url": "{{base_url}}/users",
        "header": [
          {
            "key": "Content-Type",
            "value": "application/json"
          }
        ],
        "body": {
          "mode": "raw",
          "raw": "{\n  \"name\": \"John Doe\",\n  \"email\": \"john.doe@example.com\"\n}"
        }
      },
      "response": []
    },
    // 更多请求...
  ]
}

在命令行中运行Newman

Newman是一个命令行工具,用于运行Postman集合。它允许你在持续集成服务器、脚本或任何其他非GUI环境中执行API测试。

安装Newman

确保你已经安装了Node.js和npm。然后,通过npm全局安装Newman:

npm install -g newman

运行Newman

使用以下命令运行你的Postman集合:

newman run <collection-file> -e <environment-file>

其中<collection-file>是你的Postman集合的JSON文件路径,<environment-file>是可选的环境变量文件路径,用于覆盖集合中的变量。

示例

假设你已经导出了“User API”集合,并且你有一个环境变量文件environment.json,其中包含了base_url变量的值。你可以在命令行中这样运行Newman:

newman run UserAPI_collection.json -e environment.json

Newman的报告与集成

Newman支持多种报告格式,包括HTML、JSON和JUnit,这使得将测试结果集成到你的工作流程中变得非常容易。

生成报告

运行Newman时,可以使用--reporters选项来指定报告格式。例如,要生成HTML报告,可以使用:

newman run <collection-file> --reporters cli,html --reporter-html-export <report-file.html>

集成到CI/CD

将Newman集成到持续集成/持续部署(CI/CD)流程中,可以确保每次代码更改时都自动运行API测试。这通常涉及到在你的CI/CD服务器上设置一个脚本,该脚本在构建过程中运行Newman。

示例

在Jenkins中,你可以创建一个构建任务,其中包含以下脚本:

pipeline {
    agent any
    stages {
        stage('Run API Tests') {
            steps {
                sh 'newman run UserAPI_collection.json --reporters cli,junit --reporter-junit-export api-test-results.xml'
            }
        }
    }
}

这将运行你的API测试,并生成一个JUnit格式的报告,可以被Jenkins或其他CI工具解析。

高级Newman用法与技巧

Newman提供了许多高级功能,包括环境变量、全局变量、测试脚本和集合变量,这些都可以帮助你更有效地进行API测试。

环境变量与全局变量

环境变量和全局变量允许你在集合中使用动态值。例如,你可以使用环境变量来指定不同的API端点,或者使用全局变量来存储和重用测试中的值。

测试脚本

Newman支持在请求和集合级别上运行测试脚本。这些脚本可以使用Chai或Assert库来验证API响应。

示例

在Postman集合中,你可以在请求的“Tests”选项卡中添加以下脚本:

pm.test("Status code is 200", function () {
    pm.response.to.have.status(200);
});

pm.test("Body contains user name", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.name).to.equal("John Doe");
});

集合变量

集合变量允许你在集合的请求之间共享数据。例如,你可以在一个请求中创建一个用户,并在后续请求中使用该用户的ID。

示例

在Postman集合中,你可以在“Pre-request Script”选项卡中添加以下脚本来设置集合变量:

// 设置集合变量
pm.collectionVariables.set("user_id", "12345");

然后,在后续请求中,你可以使用{{user_id}}来引用这个变量。

总结

通过使用Newman,你可以将Postman集合的API测试自动化,这不仅提高了测试效率,还确保了API在每次代码更改后都能正常工作。利用环境变量、全局变量、测试脚本和集合变量,你可以创建更复杂、更动态的测试场景,以满足你的项目需求。

Postman与Newman的结合应用

在CI/CD管道中集成Postman与Newman

在持续集成(CI)和持续部署(CD)的流程中,Postman与Newman的结合使用可以自动化API测试,确保每次代码提交后,API的功能和性能都符合预期。Newman是一个命令行集合运行器,可以运行Postman的集合,非常适合集成到CI/CD管道中。

集成步骤

  1. 安装Newman
    在CI/CD服务器上,通过npm安装Newman:

    npm install -g newman
    
  2. 配置Postman集合
    在Postman中创建和配置API测试集合,包括请求、预请求脚本、测试脚本等。

  3. 运行Newman
    使用Newman运行Postman集合,可以将结果输出到不同的格式,如HTML、JSON等,便于分析和报告。

    newman run "集合名称" -e "环境名称" --reporters cli,html --reporter-html-export "报告路径"
    
  4. 集成到CI/CD
    将Newman命令添加到CI/CD的构建脚本中,确保每次构建时都会自动运行API测试。

示例

假设我们有一个Postman集合,名为API-Tests,并且我们使用Jenkins作为CI/CD工具。以下是在Jenkins中配置Newman的示例:

  1. Jenkinsfile

    pipeline {
        agent any
        stages {
            stage('Run API Tests') {
                steps {
                    script {
                        def newmanCommand = 'newman run API-Tests -e Staging --reporters cli,html --reporter-html-export /var/reports/api-test-report.html'
                        sh newmanCommand
                    }
                }
            }
        }
    }
    
  2. 运行测试
    每次代码提交并触发构建时,Jenkins将执行上述Jenkinsfile中的Newman命令,运行API测试集合,并将结果保存为HTML报告。

使用Newman进行大规模测试

Newman不仅适用于CI/CD管道中的自动化测试,还能够处理大规模的API测试,包括高并发测试和数据驱动测试。

高并发测试

通过使用--iteration-count和--iteration-data参数,Newman可以执行多次迭代,模拟多个用户同时访问API。

数据驱动测试

使用CSV文件作为数据源,Newman可以执行基于不同数据点的测试,确保API在各种输入下都能正确响应。

示例

假设我们有一个CSV文件data.csv,其中包含用于测试的用户数据:

username,password
user1,pass1
user2,pass2
user3,pass3

以下是如何使用Newman进行数据驱动测试的示例:

newman run "API-Tests" -e "Staging" --iteration-count 3 --iteration-data "data.csv" --reporters cli,html --reporter-html-export "报告路径"

Postman与Newman的调试与故障排除

在使用Postman和Newman进行自动化测试时,可能会遇到各种问题,如请求失败、脚本错误等。以下是一些调试和故障排除的技巧:

查看日志

运行Newman时,使用--reporters cli参数可以查看命令行输出,这有助于快速定位问题。

使用Postman的调试模式

在Postman中,可以使用调试模式运行集合,这将提供详细的请求和响应信息,帮助识别问题所在。

检查环境变量

确保在运行Newman时,正确加载了环境变量。使用-e参数指定环境文件。

示例

如果在运行Newman时遇到错误,可以尝试以下命令来获取更多日志信息:

newman run "API-Tests" -e "Staging" --reporters cli,json --reporter-json-export "错误报告路径"

通过查看JSON格式的错误报告,可以更详细地了解测试失败的原因,包括具体的请求和响应数据。


通过上述步骤和示例,你可以有效地在CI/CD管道中集成Postman与Newman,进行大规模的API自动化测试,并掌握基本的调试和故障排除技巧。这将大大提高API测试的效率和可靠性,确保软件质量。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐