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工具集成在一起,实现自动化测试和持续集成。以下是一般的使用步骤:
-
将Postman测试集合导出为JSON文件,并将其上传到代码仓库中。
-
在CI工具中配置Postman的自动化测试。例如,可以使用Jenkins或Travis CI等工具。配置中需要包括测试集合的路径和环境变量。
-
在CI工具中运行Postman测试集合。可以使用Newman命令行工具来运行测试集合,并输出测试结果。例如,在Jenkins中可以使用以下命令运行测试集合:
newman run my-collection.json -e my-environment.json -r junit,html
- 分析测试结果并根据需要进行修复和调整。如果测试结果中包含失败的测试用例,则需要修复代码并重新提交到代码仓库中。
使用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中使用断言非常简单。您可以按照以下步骤使用断言:
-
首先,打开Postman并选择要测试的API。
-
然后,在请求的"Tests"选项卡下,可以添加测试脚本。
-
在测试脚本中,您可以使用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的响应是否符合预期。