如何根据 Postman 中运行的迭代增加变量值

KVN*_*KVN 9 postman postman-collection-runner

我有一个 API 请求,需要通过多次迭代在 Postman-Collection-Runner 中运行。API 请求使用变量。

我怎样才能让这个变量随着每次迭代自动增加(或者可能将迭代值设置为另一个变量)?

Meh*_*ran 18

如果我正确理解您的问题,您希望在不同的迭代中为请求中的变量分配不同的值,这可以通过两种方式实现。

a) 使用数据文件

https://learning.getpostman.com/docs/postman/collection_runs/working_with_data_files/

数据文件可以是 JSON 或 CSV 格式。不幸的是,Postman 没有办法将变量值绑定到另一个变量,除非你想以一种很老套的方式来做!

b) 预请求和测试脚本

1- 在预请求脚本中初始化环境变量,如下所示:

var value = pm.environment.get("var");

if( !value) {
    pm.environment.set("var", 1);
}
Run Code Online (Sandbox Code Playgroud)

2- 增加测试中的变量值

var value = pm.environment.get("var");

pm.environment.set("var", value+1);
Run Code Online (Sandbox Code Playgroud)

这将创建一个环境变量并在每次迭代后递增它。根据您构建集合的方式,您可能需要考虑刷新/重置环境变量以准备下一次运行

值得一提的是,Pre-request ScriptsTests分别在请求之前和之后运行,因此您可以在Tests 中编写任何想要在请求之后运行的脚本。它不应该一定是一个测试!


Vig*_*aja 6

1.pm.*在预请求脚本/测试中使用全局函数和变量

Pre-Request 脚本- 在执行请求之前运行

测试- 在执行请求后运行

一种。

pm.variables.set("id", pm.info.iteration);
Run Code Online (Sandbox Code Playgroud)

例如:example.com/{{id} }/ update给出

example.com/0/update

example.com/1/update等...

迭代次数在 Collection Runner 中设置。pm.info.iterationkey 具有当前迭代次数,从 0 开始。

var id = +pm.globals.get("id");
pm.globals.set("id", ++id);
Run Code Online (Sandbox Code Playgroud)

变量可以在任何范围内 - globals/ collection/ environment/ local/ data

在 Collection Runner 中,选中Keep Variable Values复选框,以在会话中保留变量的最终值(此处id)。

注意:如果变量是通过单独的范围(通过pm.globals.*pm.environment.*pm.collectionVariables.*)访问的,则应根据需要切换上述复选框。否则,如果通过本地范围 ( pm.variables.*)访问,则无论复选框如何,都不会保留该值。

例如:同上

有关变量和范围的更多信息


2. 使用动态变量

如果需要随机值或不需要特定顺序,可以使用这些变量。

一种。 $randomInt- 给出 1 - 1000 之间的随机整数。

例如:example.com/{{$randomInt} }/ update给出

example.com/789/update ,

example.com/265/update等...

$timestamp- 以秒为单位给出当前的 UNIX 时间戳。

例如:example.com/{{$timestamp} }/ update给出

example.com/1587489427/update

example.com/1587489434/update等...

更多关于动态变量


在回答这个问题时使用 Postman 7.22.1。未来可能会出现新的方法。