我有一个API请求,我需要在Postman-Collection-Runner中通过多次迭代运行。API请求使用Variable。我怎样才能使这个变量在每次迭代中自动增加(或者将迭代值设置为另一个变量)?
muk1a3rh1#
如果我正确理解了你的问题,你想在不同的迭代中为请求中的变量分配不同的值,这可以通过两种方式实现。
a)使用数据文件
https://learning.getpostman.com/docs/postman/collection_runs/working_with_data_files/数据文件可以是JSON或CSV格式。不幸的是,在Postman中没有办法将变量值绑定到另一个变量,除非你想用一种黑客的方式来做!
B)预请求和测试脚本
1-在Pre-request Scripts中初始化环境变量,如下所示:
var value = pm.environment.get("var"); if( !value) { pm.environment.set("var", 1); }
2-递增测试中的变量值
var value = pm.environment.get("var"); pm.environment.set("var", value+1);
这将创建一个环境变量,并在每次迭代后递增它。根据您如何构建集合,您可能需要考虑刷新/重置环境变量,以便为下一次运行做好准备值得一提的是,Pre-request Scripts和Tests分别在请求之前和之后运行,所以您可以在Tests中编写任何想要在请求之后运行的脚本,不一定是测试!
2w3kk1z52#
1.在预请求脚本/测试中使用全局pm.*函数和变量Pre-Request脚本-执行请求前运行测试-执行请求后运行
pm.*
我的天啊
pm.variables.set("id", pm.info.iteration);
例如:example.com/{{id}}/update给出
example.com/0/updateexample.com/1/update等...
迭代次数在Collection Runner中设置。pm.info.iteration键具有当前迭代次数,从0开始。B
pm.info.iteration
var id = +pm.globals.get("id"); pm.globals.set("id", ++id);
变量可以在任何范围内-globals/collection/environment/local/data。在Collection Runner中,选中Keep Variable Values复选框,以将变量的最终值保存在会话中(此处为id)。
globals
collection
environment
local
data
Keep Variable Values
id
**注意:**如果变量是通过单独的作用域访问的(通过pm.globals.*或pm.environment.*或pm.collectionVariables.*),则需要根据需要切换上述复选框。否则,如果通过本地作用域(pm.variables.*)访问,则无论复选框如何,值都不会被持久化。
pm.globals.*
pm.environment.*
pm.collectionVariables.*
pm.variables.*
例:同上More on variables and scoping
2.使用动态变量
在需要随机值或不需要特定顺序的情况下,可以使用这些变量。
a.$randomInt-给出1 - 1000之间的随机整数。
$randomInt
例如:example.com/{{$randomInt}}/update给出
example.com/789/update,example.com/265/update等...B.$timestamp-以秒为单位给出当前UNIX时间戳。
$timestamp
例如:example.com/ {{$timestamp}}/update给出
example.com/1587489427/updateexample.com/1587489434/update等...
More on Dynamic variables使用Postman 7.22.1,同时回答这个问题。将来可能会有新的方法。
xcitsw883#
1.转到“变量”选项卡并设置初始值。例如:
number = 0
1.在您的请求中使用它。例如:我把它放在我的POST请求的正文中(用双花括号):
{code = "code_{{number}}"}
1.在“测试”选项卡中,使用下面的代码将在每个request之后将number增加1:
request
number
var value = pm.globals.get("number"); pm.globals.set("number", value + 1);
您可以将迭代次数设置为10次,以运行您的请求10次,使number变量从0增加到9。
3条答案
按热度按时间muk1a3rh1#
如果我正确理解了你的问题,你想在不同的迭代中为请求中的变量分配不同的值,这可以通过两种方式实现。
a)使用数据文件
https://learning.getpostman.com/docs/postman/collection_runs/working_with_data_files/
数据文件可以是JSON或CSV格式。不幸的是,在Postman中没有办法将变量值绑定到另一个变量,除非你想用一种黑客的方式来做!
B)预请求和测试脚本
1-在Pre-request Scripts中初始化环境变量,如下所示:
2-递增测试中的变量值
这将创建一个环境变量,并在每次迭代后递增它。根据您如何构建集合,您可能需要考虑刷新/重置环境变量,以便为下一次运行做好准备
值得一提的是,Pre-request Scripts和Tests分别在请求之前和之后运行,所以您可以在Tests中编写任何想要在请求之后运行的脚本,不一定是测试!
2w3kk1z52#
1.在预请求脚本/测试中使用全局
pm.*
函数和变量Pre-Request脚本-执行请求前运行
测试-执行请求后运行
我的天啊
例如:example.com/{{id}}/update给出
example.com/0/update
example.com/1/update等...
迭代次数在Collection Runner中设置。
pm.info.iteration
键具有当前迭代次数,从0开始。B
变量可以在任何范围内-
globals
/collection
/environment
/local
/data
。在Collection Runner中,选中
Keep Variable Values
复选框,以将变量的最终值保存在会话中(此处为id
)。**注意:**如果变量是通过单独的作用域访问的(通过
pm.globals.*
或pm.environment.*
或pm.collectionVariables.*
),则需要根据需要切换上述复选框。否则,如果通过本地作用域(pm.variables.*
)访问,则无论复选框如何,值都不会被持久化。例:同上
More on variables and scoping
2.使用动态变量
在需要随机值或不需要特定顺序的情况下,可以使用这些变量。
a.
$randomInt
-给出1 - 1000之间的随机整数。例如:example.com/{{$randomInt}}/update给出
example.com/789/update,
example.com/265/update等...
B.
$timestamp
-以秒为单位给出当前UNIX时间戳。例如:example.com/ {{$timestamp}}/update给出
example.com/1587489427/update
example.com/1587489434/update等...
More on Dynamic variables
使用Postman 7.22.1,同时回答这个问题。将来可能会有新的方法。
xcitsw883#
我的三步代码方法:
1.转到“变量”选项卡并设置初始值。例如:
1.在您的请求中使用它。例如:我把它放在我的POST请求的正文中(用双花括号):
1.在“测试”选项卡中,使用下面的代码将在每个
request
之后将number
增加1:您可以将迭代次数设置为10次,以运行您的请求10次,使
number
变量从0增加到9。