PostMan笔记(三)自动化测试

news/2024/12/23 5:42:29/

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 打印设定的脚本内容。

4. 可以使用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打印设定的脚本内容

 5. 在测试脚本中,还可以使用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"));});

设定脚本

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

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

总之,使用测试脚本功能可以自动化测试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的响应是否符合预期。


http://www.ppmy.cn/news/48404.html

相关文章

WuThreat身份安全云-TVD每日漏洞情报-2023-04-19

漏洞名称:vm2 沙箱逃逸漏洞 漏洞级别:严重 漏洞编号:CVE-2023-29199,CNNVD-202304-1191 相关涉及:vm2 3.9.16 之前版本 漏洞状态:POC 参考链接:https://tvd.wuthreat.com/#/listDetail?TVD_IDTVD-2023-09144 漏洞名称:Linux 内核蓝牙子系统中存在 RCE 漏洞 漏洞级别:高危 漏洞…

LDMUI-001 61320946C模拟量模件的40端即直流24伏的负端接至逻辑地汇流排上

LDMUI-001 61320946C模拟量模件的40端即直流24伏的负端接至逻辑地汇流排上 ​ 八、现场接地常用注意事项 1.现场控制站 接地螺丝因机柜本体与底座间有胶皮形成绝缘,屏蔽地汇流排与底座间绝缘,现场控制站必须按规定做好接地处理。即分别接至现场控制站接…

#Chrome扩展程序开发教程--07:消息传递

#Chrome扩展程序开发教程--07:消息传递 引言1、基本介绍2、简单通信3、长时间通信4、其它通信4.1、Cross-extension messaging4.2、Sending messages from web pages4.3、Native messaging 引言 本系列博客旨在带来最新的Chrome扩展程序开发入门教程。 1、基本介绍 …

2023-03-18青少年软件编程(C语言)等级考试试卷(四级)解析

2023-03-18青少年软件编程(C语言)等级考试试卷(四级)解析T1、最佳路径 如下所示的由正整数数字构成的三角形: 7 3 8 8 1 0 2 7 4 4 4 5 2 6 5 从三角形的顶部到底部有很多条不同的路径。对于每条路径,把路径上面的数加起来可以得到一个和,和最大的路径称为最佳路径。你的…

DAY 40 firewalld 防火墙

firewalld防火墙是centos7系统默认的防火墙管理工具,取代了之前的iptables防火墙,也是工作在网络层,属于包过滤防火墙。 支持IPv4、IPv6防火墙设置以及以太网桥支持服务或应用程序直接添加防火墙规则接口拥有两种配置模式:临时模…

CF 607B - Zuma(区间 dp 记忆化搜索写法)

记搜大法好 Zuma 题面翻译 题目描述 Genos最近在他的手机上下载了祖玛游戏。在祖玛游戏里,存在n个一行的宝石,第i个宝石的颜色是Ci 。这个游戏的目标是尽快的消灭一行中所有的宝石。 在一秒钟,Genos能很快的挑选出这些有颜色的宝石中的一个…

c/c++:三维数组,字符数组和字符串,统计字符串中字符出现的频次,scanf输入空格,正则匹配表达式

c/c:三维数组,字符数组和字符串,统计字符串中字符出现的频次,scanf输入空格,正则匹配表达式 2022找工作是学历、能力和运气的超强结合体,遇到寒冬,大厂不招人,此时学会c的话, 我所知…

[ES6] string 拓展

[ES6] string 拓展 ES6 方法拓展是否包含子串字符串重复字符串补全 字符串普通字符串双引号单引号 模板字符串插入变量和表达式设置输出格式标签模板 ES6 方法拓展 是否包含子串 ES6 之前判断字符串是否包含子串,用 indexOf 方法,ES6 新增了子串的识别…