0


PostMan笔记(三)自动化测试

1. 简介

Postman是一款功能强大的API开发工具,也是一款流行的自动化测试工具。它提供了多种测试功能,包括测试脚本、预请求脚本和测试集合等。

1.1 测试脚本

测试脚本是Postman中用于自动化测试的核心部分。它可以使用JavaScript语言编写,通过发送API请求、获取响应并解析响应,验证API是否正常工作。

测试脚本可以访问请求和响应对象,以及Postman的全局变量和环境变量。可以使用一系列预定义的函数和方法,例如pm.test()、pm.expect()和pm.sendRequest()等。

1.2 预请求脚本

预请求脚本是在请求被发送之前运行的脚本。它可以用于设置请求头、参数和身份验证,以确保请求被正确设置。它可以访问请求对象和Postman的全局变量和环境变量。

预请求脚本是可选的,但它们对于确保请求的正确性非常有用。

1.3 测试集合

测试集合是一组API测试的集合。可以将测试脚本和预请求脚本组合在一起,以创建测试集合。测试集合可以运行一系列的测试脚本,并报告测试结果。

测试集合可以使用Postman的测试运行器进行执行。测试运行器提供了多个选项,例如选择环境和设置运行参数。它还可以生成报告,以帮助您识别API中的错误和缺陷。

1.4 持续集成

Postman可以与持续集成(CI)工具集成,例如Jenkins、Travis CI和CircleCI等。这样,可以将API测试自动化为CI/CD管道的一部分,以确保代码更改不会破坏API的功能。

通过与CI工具集成,可以自动运行测试集合,并在测试失败时通知开发人员。

总之,Postman提供了强大的API测试自动化功能,包括测试脚本、预请求脚本、测试集合和持续集成。这些功能可以帮助开发人员在开发和部署API时提高测试效率和测试覆盖率。

2.测试脚本功能

2.1 测试脚本的种类

(1)全局测试脚本

全局测试脚本可以在整个Postman应用程序中使用。在Postman中,选择“Settings”菜单,然后选择“General”选项卡。在“General”选项卡中,可以设置全局测试脚本。全局测试脚本可以用于设置所有请求共有的测试脚本。在测试脚本中,可以编写JavaScript代码进行断言、验证、数据处理等操作。

(2)请求测试脚本

请求测试脚本只适用于当前请求。在Postman中,选择一个请求并选择“Tests”选项卡。在测试编辑器中,可以编写请求测试脚本。请求测试脚本可以用于设置当前请求特有的测试脚本。

2.2 测试脚本的使用用例

使用测试脚本功能可以通过编写JavaScript代码来自动化测试API的响应和验证。以下是使用测试脚本的步骤:

  1. 打开Postman并创建一个新的请求。

  2. 选择“Tests”选项卡,打开测试编辑器。

  3. 在测试编辑器中,可以使用JavaScript编写测试脚本。例如,下面是一个使用pm.test()函数验证响应状态码的示例:

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

发起请求的接口及响应码:

根据响应状态码不同, pm.response.to.have.status(状态码) 会执行对应的脚本,在 Test Results 打印设定的脚本内容。

  1. 可以使用pm.expect()函数进行其他类型的验证。例如,下面是一个使用pm.expect()函数验证响应JSON中是否包含特定的属性:
    pm.test("Response has property 'data'", function () {
      var jsonData = pm.response.json();
      pm.expect(jsonData).to.have.property('data');
    });

发起请求,接口返回的有 data 属性,

符合脚本中包含特定属性的要求,Test Results打印设定的脚本内容

  1. 在测试脚本中,还可以使用Postman的全局变量和环境变量。例如,可以使用环境变量中的值来验证响应JSON中的属性:
    pm.test("Response has correct name", function () {
      var jsonData = pm.response.json();
      pm.expect(jsonData.name).to.equal(pm.environment.get("expected_name"));
    });

设定脚本

请求接口后,验证环境变量执行脚本内容

  1. 编写完成测试脚本后,点击“Send”按钮发送请求并运行测试脚本。
  2. 在测试结果面板中,可以查看测试的结果。如果测试失败,可以查看错误信息并进行修复。

总之,使用测试脚本功能可以自动化测试API的响应和验证,以提高测试效率和测试覆盖率。

3. 预请求脚本

3.1 预请求脚本的种类

在Postman中,预请求脚本有两种类型:全局预请求脚本和请求预请求脚本。它们的区别在于它们所在的作用域。

(1)全局预请求脚本

全局预请求脚本可以在整个Postman应用程序中使用。在Postman中,选择“Settings”菜单,然后选择“General”选项卡。在“General”选项卡中,可以设置全局预请求脚本。全局预请求脚本可以用于设置所有请求共有的参数、验证等操作。

(2)请求预请求脚本

请求预请求脚本只适用于当前请求。在Postman中,选择一个请求并选择“Pre-request Scripts”选项卡。在预请求编辑器中,可以编写请求预请求脚本。请求预请求脚本可以用于设置当前请求特有的参数、验证等操作。

总之,全局预请求脚本可以在整个Postman应用程序中使用,而请求预请求脚本只适用于当前请求。在编写预请求脚本时,需要根据请求的特定情况编写相应的预请求脚本。

3.2 预请求脚本使用用例

预请求脚本(Pre-request Scripts)是Postman中一个功能强大的工具,可以在发送实际请求之前运行JavaScript代码。预请求脚本可以用于设置请求头、参数、验证等操作。以下是使用预请求脚本的步骤:

(1)打开Postman并创建一个新的请求。

(2)选择“Pre-request Scripts”选项卡,打开预请求编辑器。

(3)在预请求编辑器中,可以使用JavaScript编写预请求脚本。例如,下面是一个使用pm.environment.set()函数设置环境变量的示例:

pm.environment.set("api_key", "my_api_key");

(4)可以在预请求脚本中使用Postman的全局变量和环境变量。例如,可以使用全局变量来设置请求头:

pm.request.headers.add({
  key: 'Authorization',
  value: 'Bearer ' + pm.globals.get('access_token')
});

(5)在预请求脚本中还可以使用Postman的其他函数,例如pm.variables.set()、pm.expect()等。例如,可以使用pm.expect()函数验证请求参数:

pm.expect(pm.request.url.query.has("id")).to.be.true;

(6)编写完成预请求脚本后,点击“Send”按钮发送请求。Postman将在发送实际请求之前运行预请求脚本。

总之,使用预请求脚本可以在发送实际请求之前运行JavaScript代码,以设置请求头、参数、验证等操作。在编写预请求脚本时,需要根据请求的特定情况编写相应的预请求脚本。

3.3 怎么使用预请求脚本和SpringBoot接口做测试

要使用预请求脚本和Spring Boot接口进行测试,可以按照以下步骤操作:

(1)打开Postman,创建一个新的请求,并选择请求方法(例如GET、POST、PUT等)。

(2)在请求的“Pre-request Scripts”选项卡中编写预请求脚本。在预请求脚本中,可以设置请求头、请求参数等信息。例如,下面是一个设置Authorization请求头的示例代码:

pm.request.headers.add({
    key: 'Authorization',
    value: 'Bearer ' + pm.environment.get('access_token')
});

(3)在请求的“Body”选项卡中设置请求体。根据请求的类型,可以选择“form-data”、“x-www-form-urlencoded”、“raw”等格式。

(4)在请求的“Tests”选项卡中编写测试脚本。在测试脚本中,可以使用断言函数进行测试结果验证。例如,下面是一个使用pm.expect()函数验证请求结果的示例代码:

pm.test("Response should be 200 OK", function () {
    pm.response.to.have.status(200);
});

(5)发送请求,并查看测试结果。如果测试结果符合预期,则说明接口测试成功。

需要注意的是,预请求脚本和测试脚本都是基于JavaScript编写的。在编写脚本时,需要注意语法和API的使用。此外,需要根据Spring Boot接口的具体情况编写相应的预请求脚本和测试脚本,以确保测试的准确性和可靠性。

4. 测试集合功能

使用测试集合功能可以将多个测试脚本组合在一起,并且可以在单个操作中运行所有测试。以下是使用测试集合功能的步骤:

(1)在Postman中,创建多个请求并设置它们的测试脚本。

(2)在左侧导航栏中,选择“New Collection”创建一个新的测试集合。将所有相关的请求添加到测试集合中,以便它们可以一起进行测试。

(3)在测试集合的“Tests”选项卡中编写测试集合脚本。测试集合脚本可以用于设置所有请求共有的测试脚本。在测试集合脚本中,可以使用JavaScript编写测试脚本和断言函数,对请求结果进行验证。例如,下面是一个测试集合脚本示例,用于验证所有请求的响应时间是否小于200ms:

// Verify that all requests have a response time less than 200ms
pm.test("Response time is less than 200ms", function () {
    pm.expect(pm.response.responseTime).to.be.below(200);
});

(4)保存测试集合并运行测试。在运行测试之前,可以选择一个环境来设置变量和环境参数。测试结果将在Postman的“Tests Results”选项卡中显示。如果所有测试通过,则测试集合将标记为“Pass”。

通过使用测试集合功能,可以将多个测试脚本组合在一起,以便在单个操作中运行所有测试,并且可以更容易地管理和维护测试用例。

5. 持续集成功能

5.1 Postman的持续集成有什么功能?具体怎么使用

Postman的持续集成(Continuous Integration,CI)功能主要包括以下三个部分:

(1)Postman API:Postman API可以与CI工具进行集成,实现自动化测试和持续集成。通过Postman API,可以运行Postman测试集合并获取测试结果。

(2)Newman命令行工具:Newman是Postman的命令行工具,可以在CI工具中使用。通过Newman,可以在命令行中运行Postman测试集合,并将测试结果输出为JUnit XML格式或HTML格式。

(3)Postman代理:Postman代理可以在CI工具中使用,以便在CI工具中设置环境变量和授权头。代理可以确保环境变量和授权头在测试过程中正确地设置。

使用Postman的持续集成功能,可以将Postman测试集合与CI工具集成在一起,实现自动化测试和持续集成。以下是一般的使用步骤:

  1. 将Postman测试集合导出为JSON文件,并将其上传到代码仓库中。
  2. 在CI工具中配置Postman的自动化测试。例如,可以使用Jenkins或Travis CI等工具。配置中需要包括测试集合的路径和环境变量。
  3. 在CI工具中运行Postman测试集合。可以使用Newman命令行工具来运行测试集合,并输出测试结果。例如,在Jenkins中可以使用以下命令运行测试集合:newman run my-collection.json -e my-environment.json -r junit,html
  4. 分析测试结果并根据需要进行修复和调整。如果测试结果中包含失败的测试用例,则需要修复代码并重新提交到代码仓库中。

使用Postman的持续集成功能可以加快软件开发的速度,并提高代码的质量和稳定性。

5.2 持续集成用例

假设我们有一个Spring Boot应用程序,该应用程序提供了一个REST API,用于获取用户的详细信息。我们想要使用Postman持续集成来测试该API,并在代码仓库中进行自动化测试和持续集成。

(1)创建一个新的Postman测试集合,并添加一个测试用例,以测试Spring Boot应用程序的REST API。测试用例可以使用Postman的请求构建器来创建,包括请求URL、请求方法、请求头、请求体等。

(2)在测试用例中添加测试脚本,以验证API返回的响应是否正确。例如,可以使用JavaScript编写一个测试脚本,检查API返回的用户详细信息是否正确。

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

pm.test("User name is correct", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.name).to.eql("John Doe");
});

pm.test("User age is correct", function () {
    var jsonData = pm.response.json();
    pm.expect(jsonData.age).to.eql(30);
});

(3)将测试集合导出为JSON文件,并将其上传到代码仓库中。

(4)在CI工具中配置Postman的自动化测试。例如,在Jenkins中可以使用以下步骤:

  • 安装Node.js和Newman命令行工具。
  • 设置环境变量,以便Newman命令行工具可以在CI工具中正确运行。例如,在Jenkins中可以使用以下命令:
export PATH=$PATH:/usr/local/bin
  • 在Jenkins中创建一个新的构建任务,并添加以下构建步骤:
newman run my-collection.json -e my-environment.json -r junit,html

此命令将运行Postman测试集合,并使用my-environment.json文件中定义的环境变量。测试结果将输出为JUnit XML格式和HTML格式。

(5)运行CI工具中的构建任务,以运行Postman测试集合并获取测试结果。如果测试结果中包含失败的测试用例,则需要修复代码并重新提交到代码仓库中。

使用Postman持续集成可以加快软件开发的速度,并提高代码的质量和稳定性。通过使用Postman的自动化测试和持续集成功能,我们可以在代码仓库中进行自动化测试,并确保代码变更不会破坏现有的功能。

6. 断言

6.1 什么是断言

在自动化测试中,断言是一种用于验证测试结果的技术。它是一种检查条件是否满足的机制,如果条件不满足,则测试失败。断言通常用于自动化测试框架中,以确保测试的可靠性和一致性。

在Postman中,可以使用JavaScript编写测试脚本,并使用断言来验证API的响应是否正确。以下是一些常用的断言:

  • pm.expect(value).to.eql(expectedValue):检查value和expectedValue是否相等。
  • pm.expect(value).to.be.above(expectedValue):检查value是否大于expectedValue。
  • pm.expect(value).to.be.below(expectedValue):检查value是否小于expectedValue。
  • pm.expect(value).to.be.ok:检查value是否为真。
  • pm.expect(value).to.have.property(propertyName, expectedValue):检查对象value是否具有属性propertyName,并且该属性的值是否等于expectedValue。
  • pm.expect(value).to.have.length(expectedLength):检查数组value的长度是否等于expectedLength。
  • pm.expect(value).to.match(pattern):检查value是否与指定的正则表达式pattern匹配。
  • pm.expect(value).to.be.oneOf(expectedValues):检查value是否与expectedValues中的任何一个值相等。

可以根据需要使用这些断言,验证API的响应是否正确。在编写测试脚本时,应该根据API的特性和预期结果选择合适的断言,以确保测试结果的可靠性和一致性。

6.2 断言的使用方式

在Postman中使用断言非常简单。您可以按照以下步骤使用断言:

  1. 首先,打开Postman并选择要测试的API。
  2. 然后,在请求的"Tests"选项卡下,可以添加测试脚本。
  3. 在测试脚本中,您可以使用JavaScript编写断言来验证API的响应是否符合预期。

以下是一个简单的示例,展示如何使用断言来验证API的响应是否为JSON格式:

// 获取响应内容
const responseBody = pm.response.json();

// 验证响应是否为JSON格式
pm.test("响应应该是JSON格式", function () {
    pm.expect(responseBody).to.be.an("object");
});

在上面的示例中,我们首先使用

pm.response.json()

获取API的响应内容,然后使用

pm.test()

pm.expect()

来编写断言。在

pm.expect()

中,我们使用

to.be.an()

断言来验证响应是否为JavaScript对象。

除了

to.be.an()

之外,Postman还提供了许多其他的断言,例如

to.eql()

to.have.status()

等等。您可以根据需要选择合适的断言来验证API的响应是否符合预期。


本文转载自: https://blog.csdn.net/weixin_42405670/article/details/130306241
版权归原作者 鮀城小帅 所有, 如有侵权,请联系我们删除。

“PostMan笔记(三)自动化测试”的评论:

还没有评论