一、运行集合
集合是一组请求,可以作为一系列请求一起运行,以对应相应的环境。
当我们想要自动化API测试时,运行集合非常有用。 运行集合时,会一个接一个地发送集合中的所有请求。
使用脚本时,我们可以构建集成测试套件,在API请求之间传递数据,以及构建镜像API的实际用例的工作流。
1、各项配置集合运行参数
- Collection/Folder
这是要运行的集合或文件夹。运行集合时,集合中的所有请求都按照它们在主应用程序中显示的顺序发送。这意味着运行每个文件夹时会顺序执行文件夹内的每个请求。选择文件夹时,仅执行该文件夹,并且仅发送文件夹内的请求。但是,我们可以在使用setNextRequest()方法时更改顺序以更接近镜像工作流。
- Environment
集合运行时使用的环境。
- Iterations
该参数配置我们的集合将被运行的次数。通常通过使用不同的测试数据运行多次,从而来确保API的稳定性。
-
Delay
集合运行中每个请求之间的间隔(以毫秒为单位)。 -
Log Responses
限制集合运行时的响应日志记录。默认情况下,会记录所有响应以进行调试。对于大型集合,可以更改此设置以提高性能。 -
Data
提供用于集合运行的数据文件。 -
Persist variables
默认情况下,集合运行器中的任何环境更改都不会反映在请求构建器中。
2、在集合中使用变量
- 默认情况下,首次打开Collection Runner时会检查Keep variable values值,如果不希望在运行期间更新变量,要取消选中“Keep variable values”复选框。在这种情况下,在Collection Runner中修改的任何变量都不会影响Postman主应用中对应的环境变量值,在Collection Runner中做的任何修改都会在运行完成后恢复它原始的值。
- 在选项中选中了Keep variable values,在Collection Runner环境(或全局变量)中的任何变量变化都将反映在Postman主应用程序窗口中。如果我们再次运行该集合,会发现它现在会失败。
3、使用数据文件
使用数据文件是在各种情况下测试具有不同数据的API行为的有效方法。 我们可以将数据文件视为集合运行的每次测试的参数。
(1)导入集合文件
集合中有一个请求,请求有两个变量,分别是请求URL中的path和请求体中的value。
(2)构建数据文件
数据文件内容如下:
[{
"path": "post",
"value": "1"
}, {
"path": "post",
"value": "2"
}, {
"path": "post",
"value": "3"
}, {
"path": "post",
"value": "4"
}]
这是一个对象数组。每个对象表示一次迭代的变量值。这个对象的每个成员都代表一个变量。这样,在第一次迭代中,路径的变量将被赋值为post,并且请求体中的value将被赋值为1。同样,在第二次迭代中,路径的变量将被赋值为post,并且请求体中的value将被赋值为2。
(3)运行集合
(4)查看运行结果
4、构建工作流
构建工作流可以在运行集合时,执行请求的顺序按照自己设置的来,而不是依次执行。
当开始收集运行时,所有请求都按照在主应用程序中看到的顺序运行。 因此,首先按文件夹的顺序执行所有请求,然后执行集合根目录中的所有请求。可以使用名为postman.setNextRequest()的内置函数覆盖此行为。 顾名思义,此函数允许指定下一个要运行的请求。
postman.setNextRequest()是一个带有一个参数的函数,它是接下来要运行的请求的名称或ID。
【实例】
集合中有4个请求,在第一个请求的“Tests”标签页中包含以下代码:
// Some code here
postman.setNextRequest('Request 4')
// Some code here
运行结合时,会发现执行完第一个请求后,跳转到执行第四个请求
注意:
- postman.setNextRequest()始终在当前脚本的末尾执行。如果将此函数放在其他代码块之前,这些块仍将执行。
- postman.setNextRequest()有一个范围,它是集合运行的源。如果您运行集合,则可以跳转到集合中的任何请求(甚至是文件夹内的请求,使用相同的语法)。但是,如果运行文件夹,则postman.setNextRequest()的范围仅限于该文件夹。因此,您可以跳转到此文件夹中的任何请求,但不能跳转到文件夹之外的任何请求。它包括其他文件夹中的请求,以及集合中的根级请求。
二、监控
定期运行集合以检查其性能和响应,以检查收集中的所有请求是否正常且运行正常。
1、在监视器中运行集合
- Variables:无法导入现有的全局变量,可以在监视器运行期间创建新的变量。全局和环境变量不会持久存在
- Console Output:默认情况下,请求和响应正文不会记录到控制台。这是出于安全和隐私的原因。对于潜在敏感的标头也是如此,例如cookie和授权密钥。
- Time Limits: 监控目前可以安排为每5分钟一次,或每周一次。每次运行限制为5分钟,包括所有HTTP请求,响应以及预请求和测试脚本。
- File Uploads:无法将文件附加到请求,但是可以将数据作为原始请求体上传。
- Multiple Iterations:监视器默认只运行1次迭代,但是可以使用setNextRequest()进行多次迭代。
- Multi-region Monitoring: 监视器允许在指定的地理区域中运行集合,只能从监控页面指定多区域监控。
- Data Files:无法在一次迭代中附加数据文件。
- Accessible APIs: 与Postman应用程序一样,监控要求所有URL在Internet上公开可用。将来,还可以监控私有API。监视器无法直接访问localhost,并且可能会遇到防火墙,因为监视在Postman云中运行。
2、设置监视器
Postman允许监控共享或私有集合。 如果选择监控共享集合,团队可以看到监视器。 如果在非共享集合上创建监视器,则监视器是私有的,只有自己可以看到。
可以从以下位置创建监视器:
- Sidebar
- New button
- Launch screen
- Postman web
以下以Sidebar创建为例
(1)在Postman应用程序中,单击要监视的集合旁边的省略号(…),选择"Monitor Collection"。
(2)输入显示器的名称,选择一个环境(可选),设置监控运行的频率,选择世界上的一个或多个地区。 还可以选择高级监视器选项,以接收运行失败和错误的电子邮件通知、请求超时、请求延迟、不遵循重定向以及禁用SSL验证。设置完成后点击创建。
3、查看监视器结果
(1)单击创建的监视器以查看有关其性能和故障排除的更多详细信息
(2)进入“监视器性能”页面。 主时间轴显示监视器的所有过去运行。 每个条形表示一次监视器运行。红色表示测试失败。 蓝色表示所有请求的总响应时间。
(3)结果部分显示了请求级别的详细信息:测试结果,响应代码,响应时间和响应大小。 此外,如果在多个区域中设置监视器,则可以按区域进行过滤。
(4)单击“Console Log”选项卡时,还可以查看日志。
4、监控API和网站
(1)监控API
- 监控特定端点:在不同请求中创建具有相同端点的不同变体的集合。这里是测试每个变体的响应,以便完全覆盖端点。
- 监控整个API:具有将公共API主机存储在环境变量中的细微差别,使得跨不同API端点的请求在其路径中以及其他请求参数之间不同。这样的序列还可以跨请求链接数据,这允许整个API测试整个API。
- 运行API测试套件:在各种端点相互关联的API中,关于其功能的准确知识至关重要。如果数据从一个请求传递到另一个请求,则整个响应或其中的一部分可以保存为环境变量。在设置非原子值(对象,数组等)时应特别小心,因为原始值将丢失。相反,可以通过以下方式处理此类复杂对象和数组:
// set the value
postman.setEnvironmentVariable('complexObj', JSON.stringify(myComplexObjOrArray, null, 2));
// Fetch the value
var foo;
try {
foo = JSON.parse(postman.getEnvironmentVariable('complexObj'));
}
catch (e) {
console.error(e);
foo = { __parseError: true };
}
if (foo.__parseError) {
// handle parse errors here
}
使用字符串化的嵌套值,可以将其传递给后续请求,例如,作为请求主体。
(2)监控网站
- 监控HTTP响应代码
可以通过检查测试脚本中的responseCode.code值来完成响应代码测试。
tests['Request resulted in 200 OK'] = responseCode.code === 200;
- 监控延迟
作为请求超时的替代方法,可以通过比较测试脚本中的responseTime变量的值来监视网站响应延迟。
tests['Response latency is acceptable'] = responseTime < 1000;
// responseTime is in milliseconds
三、模拟服务器
前端或后端的延迟使依赖团队难以有效地完成工作。 Postman的模拟服务器可以减轻开发过程中的延迟。
在发送实际请求之前,前端开发人员可以创建模拟服务器来模拟Postman集合中的每个端点及其相应的响应。开发人员可以查看潜在的响应,而无需启动后端。
Postman允许创建两种类型的模拟服务器:私有和公共。
1、设置模拟服务器
(1)在标题工具栏中,单击“New”按钮,选择Mock Server。
(2)选择是否要模拟新API或现有或团队集合。 如果要创建要模拟的新API,则必须选择请求方法并输入请求路径,响应代码和响应正文。 如果使用现有或团队集合进行模拟,则必须从现有集合或团队集合列表中选择集合。在这里我们选择集合。
(3)选中集合后会自动跳转到配置模拟服务器选项卡页面: 输入模拟的名称、 选择一个环境(可选)、指示是否要将此模拟服务器设为私有。
2、模拟服务器和示例
(1)发送请求
GET:https://postman-echo.com/get?test=123
(2)将请求保存到集合
(3) 保存请求R1的响应为例
(4) 为集合创建模拟
(5)使用模拟服务器发送请求
(6)为了进一步说明模拟服务的响应完全取决于您保存的示例,让我们尝试在此集合中添加另一个示例。 我们将重复以上步骤,将请求保存到集合并保存响应作为示例,使用新URL https://postman-echo.com/test。