接上一小节的 Postman 批量运行用例中提到的 Collection Runner 界面有各种参数,如下图:
运行参数如下:
- Environment:选择运行的环境,环境主要决定环境变量的;
- Iterations: 用例迭代的次数,也就是当前选中的这些请求需要运行几次;
- Delay:延迟,用来设置每个请求之间的运行时间(以毫米为单位),如果设置了,则一个请求运行完后会等待相应的时间才运行下一个请求;
- Log Responses:记录响应日志,这是一种限制性的设置,默认是记录所有请求的日志,也可以限制为只记录错误日志或者完全不记录;
- Data:选中数据文件,这是 Postman 提供的数据驱动的方式,数据针对当前 Collection 中请求中使用的变量。支持 Csv 和 Json 格式的文件;
- Keep variable values:保持变量值。如果 Collection 中有脚本重新设置环境变量或者全局变量的值,默认情况下只对当次运行有效。如果勾选了此选项,那么在脚本中重设的变量值会保存下来,也就是会直接修改 Postman 中预设的变量值;
- Run collection without using stored cookies:如果勾选此选项,运行 Collection 的时候则不会使用 Postman 的 cookie 管理器;
- Save cookies after collection run:运行后,储存运行过程中的 cookies,此选项默认勾选。
Environment 环境
在 Postman 中不同的环境可以设置不同的环境变量值,这样可以通过切换环境,灵活改变需要修改的变量值。
在运行 Collection 的时候,同样可以通过切换环境来改变这些环境变量的值。
关于环境及环境变量,请参考对应的章节。
Iterations 迭代
迭代的意思其实就是运行多少次。
以下示例中,我选中了 Postman Echo 中的一个文件夹,并设置了迭代次数为 3 次:
我们看看运行结果:
设置了迭代 3 次,那么 Runner 会将选中的请求运行 3 次,在运行结果的右侧,我们可以看到一个筛选器,你可以点击对应的数值,分别查看每次运行的情况。
你还可以通过顶部橙色的按钮Run Summary
查看运行摘要,如下图:
在摘要界面,我们可以看到三个迭代运行的情况摘要,在此界面所有迭代中都是通过才会标记该用例为通过(也就是请求前面的方框为 绿色),可以点击列表顶部的数字回到对应迭代的运行结果界面。
Log Responses 限制日志记录
默认情况下,会开启所有请求的日志记录,但是对于一些大型的 Collection,可以关闭日志记录以提高性能。
Log Responses 有三种选项:
- For all requests:所有请求的响应内容都回被记录;
- For failed requests:只有至少一个断言失败的请求才会记录响应日志;
- For no requests:所有请求都不会记录日志。
Data 数据文件
这是 Postman 提供的数据驱动的功能,可以选择 Csv 或者 Json 文件中记录的数据。
以下面的请求为例,下图中的请求有两个参数path
和value
:
那么对应的文件格式如下:
Csv 文件的格式
csv 是一种以逗号为分隔符的文本文件,也可以通过 excel 编辑。Postman 支持的 csv 数据文件格式如下(顶部的 path 和 value 分别对应 Collection 请求中的变量):
path, value
post, 1
post, 2
post, 3
post, 4
Json 文件格式
Json 文件大家应该都清楚,是一种类似 Js 中对象格式(熟悉 Python 的同学可以参考字典格式)。
Postman 支持的格式为一个数组,数组中的对象包含的键值对为所有的变量值:
[{
"path": "post",
"value": "1",
}, {
"path": "post",
"value": "2",
}, {
"path": "post",
"value": "3",
}, {
"path": "post",
"value": "4"
}]
注意,如果数据文件中的变量数量少于 Collection 中使用的变量数量,那么 Postman 运行时会尝试从环境( Environment )中取值。
文件上传后,会在 Data 选项下方出现 Data File Type 选项:
提示: Iterations 迭代的数量,会根据数据的数量自动设置。比如上面我们的数据有 4 条,则会自动设置迭代数量为 4。当然,你可以修改。
Keep variable values 保持变量值
默认情况下,每次 Collection 运行结束后,都会自动清理测试过程中由代码产生的环境变量和全局变量。
如果你之前在环境中设置了某个变量的值,就算在 Collection 中有代码改变变量的值,在运行 Collection 后,变量的值依然时你设置的那个而不是代码改变后的。但如果你勾选了此设置,那么你将会看到变量的值变为运行过程中代码改的那个值。
简单举一个例子(以下环境和环境变量的操作请参考对应章节):
- 首先我们设置一个 test 的环境;
- 在该环境中设置一个变量 value,并设置默认值为 123 ;
- 发送一个请求,在请求的 Tests 中重设 value 的值为 xyz;
请求url为:
https://postman-echo.com/get?test={{value}}
请求的 Tests为:
pm.environment.set("value", "xyz"); // 重设 value 变量的值
pm.test("判断请求是否包含test参数", function () {
pm.expect(pm.response.text()).to.include("test");
});
- 不勾选此选项运行一次 Collection 并观察环境变量的值,依然是 123;
- 勾选此选项再运行一次 Collection,再观察环境变量的值;
- 能明了否?
Run collection without using stored cookies 不使用 cookie 管理器
在我们测试会保存 Cookie 的请求时,Postman 内置的 Cookie 管理器会自动储存请求收倒的 Cookie 信息(这功能类似浏览器的行为)。后续请求可以使用 Cookie 管理器中的 Cookie 信息。
比如登录请求后会自动存储 Cookie,而后需要登录才能访问的请求,会使用已存储的 Cookie 信息,就能正常访问。
此设置如果勾选,则会阻止 Collecion 中的请求存储 Cookie 和从 Cookie 管理器中读取 Cookie。也就是说,你需要自己额外处理这些 Cookie。
当然如果这些请求对应的接口并没有使用 Cookie 机制那就不用在意此选项了。