如何根据 Postman 中 运行 的迭代来增加变量值
How to increase Variable value based on the iteration being run in Postman
我有一个 API 请求,我需要通过多次迭代在 Postman-Collection-Runner 中 运行。 API 请求使用变量。
如何让这个变量随着每次迭代自动增加(或者将迭代值设置为另一个变量)?
如果我对你的问题理解正确,你想在不同的迭代中为请求中的变量分配不同的值,这可以通过两种方式实现。
a) 使用数据文件
https://learning.getpostman.com/docs/postman/collection_runs/working_with_data_files/
数据文件可以是JSON或CSV格式。不幸的是,在 Postman 中没有办法将变量值绑定到另一个变量,除非你想以一种 hacky 的方式来做!
b) 预请求和测试脚本
1- 在 预请求脚本 中初始化环境变量,如下所示:
var value = pm.environment.get("var");
if( !value) {
pm.environment.set("var", 1);
}
2- 增加 Tests
中的变量值
var value = pm.environment.get("var");
pm.environment.set("var", value+1);
这将创建一个环境变量并在每次迭代后递增它。根据您构建集合的方式,您可能需要考虑 flushing/resetting 环境变量,以便为下一个 运行
做好准备
值得一提的是 Pre-request Scripts 和 Tests 运行ning 分别在请求前后,所以你在 Tests 请求后,可以编写任何想要 运行 的脚本。应该不一定是考试吧!
1.在预请求中使用全局 pm.*
函数和变量 Scripts/Tests
预请求脚本 - 在执行请求之前运行
测试 - 在执行请求后运行
a.
pm.variables.set("id", pm.info.iteration);
例如:example.com/{{id}}/update 给出
示例。com/0/update
示例。com/1/update等...
迭代次数在Collection Runner中设置。 pm.info.iteration
键具有当前迭代编号,从 0 开始。
b.
var id = +pm.globals.get("id");
pm.globals.set("id", ++id);
变量可以在任何范围内 - globals
/collection
/environment
/local
/data
.
在 Collection Runner 中,选中 Keep Variable Values
复选框,以在会话中保留变量的最终值(此处 id
)。
注意:如果变量是通过单独的作用域访问的(通过pm.globals.*
或pm.environment.*
或pm.collectionVariables.*
),那么提到的复选框应根据需要切换。否则,如果通过本地范围 (pm.variables.*
) 访问,则无论复选框如何,该值都不会保留。
例:同上
2。使用动态变量
如果需要随机值或不需要特定顺序,可以使用这些变量。
a. $randomInt
- 给出 1 - 1000 之间的随机整数。
例如:example.com/{{$randomInt}}/update 给出
示例。com/789/update,
示例。com/265/update等...
b. $timestamp
- 以秒为单位给出当前 UNIX 时间戳。
例如:example.com/{{$timestamp}}/update 给出
示例。com/1587489427/update
示例。com/1587489434/update等...
使用 Postman 7.22.1,同时回答这个问题。以后可能会有新的方法。
我有一个 API 请求,我需要通过多次迭代在 Postman-Collection-Runner 中 运行。 API 请求使用变量。
如何让这个变量随着每次迭代自动增加(或者将迭代值设置为另一个变量)?
如果我对你的问题理解正确,你想在不同的迭代中为请求中的变量分配不同的值,这可以通过两种方式实现。
a) 使用数据文件
https://learning.getpostman.com/docs/postman/collection_runs/working_with_data_files/
数据文件可以是JSON或CSV格式。不幸的是,在 Postman 中没有办法将变量值绑定到另一个变量,除非你想以一种 hacky 的方式来做!
b) 预请求和测试脚本
1- 在 预请求脚本 中初始化环境变量,如下所示:
var value = pm.environment.get("var");
if( !value) {
pm.environment.set("var", 1);
}
2- 增加 Tests
中的变量值var value = pm.environment.get("var");
pm.environment.set("var", value+1);
这将创建一个环境变量并在每次迭代后递增它。根据您构建集合的方式,您可能需要考虑 flushing/resetting 环境变量,以便为下一个 运行
做好准备值得一提的是 Pre-request Scripts 和 Tests 运行ning 分别在请求前后,所以你在 Tests 请求后,可以编写任何想要 运行 的脚本。应该不一定是考试吧!
1.在预请求中使用全局 pm.*
函数和变量 Scripts/Tests
预请求脚本 - 在执行请求之前运行
测试 - 在执行请求后运行
a.
pm.variables.set("id", pm.info.iteration);
例如:example.com/{{id}}/update 给出
示例。com/0/update
示例。com/1/update等...
迭代次数在Collection Runner中设置。 pm.info.iteration
键具有当前迭代编号,从 0 开始。
b.
var id = +pm.globals.get("id");
pm.globals.set("id", ++id);
变量可以在任何范围内 - globals
/collection
/environment
/local
/data
.
在 Collection Runner 中,选中 Keep Variable Values
复选框,以在会话中保留变量的最终值(此处 id
)。
注意:如果变量是通过单独的作用域访问的(通过pm.globals.*
或pm.environment.*
或pm.collectionVariables.*
),那么提到的复选框应根据需要切换。否则,如果通过本地范围 (pm.variables.*
) 访问,则无论复选框如何,该值都不会保留。
例:同上
2。使用动态变量
如果需要随机值或不需要特定顺序,可以使用这些变量。
a. $randomInt
- 给出 1 - 1000 之间的随机整数。
例如:example.com/{{$randomInt}}/update 给出
示例。com/789/update,
示例。com/265/update等...
b. $timestamp
- 以秒为单位给出当前 UNIX 时间戳。
例如:example.com/{{$timestamp}}/update 给出
示例。com/1587489427/update
示例。com/1587489434/update等...
使用 Postman 7.22.1,同时回答这个问题。以后可能会有新的方法。