automated-tests - 使用邮递员在多个循环中设置环境变量
问题描述
我想测试以下工作流结构。
在第一个请求脚本中,
var st = [1,2,3]
var i = st.length;
for(var j=0; j<i; j++) {
pm.environment.set("id", st[j]);
postman.setNextRequest("getNext");
};
在 getNext 预测试脚本中,
var id = pm.environment.get("id");
console.log(`Run ${id}`);
在控制台中,仅Run 3
显示消息。
问题是 env 变量被最后一个元素覆盖。而且我只能看到列表的最后一个元素,并且请求正在使用最后一个元素。
我想知道如何保持环境变量不被覆盖?
编辑 我删除了我凌乱的问题并添加了简单的工作流程。
解决方案
postman.setNextRequest()
总是在当前请求结束时执行。这意味着如果您将此函数放在预请求或测试脚本中的任何其他代码块之前,这些块仍将执行。
这意味着,循环运行 3 次,并且仅在最后,当完整的脚本完成时,它会调用postman.setNextRequest()
, whenid
具有 value 3
。
有关更多详细信息,请参阅文档。
找到这篇博文,解释如何实现它:https ://ambertests.com/2019/01/28/postman-how-to-dynamic-iteration-within-a-collection/
推荐阅读
- bash - .bash_profile 中有没有办法创建两个做同样事情的别名?
- c++ - 从值小于 256 的 uint16 到 uint8 的字节序安全转换
- python - 如何做出`无效的选择。如果用户没有输入其中一个选项,请再试一次?
- database - Laravel 5.5 - DB::statement 错误与 \copy 命令(POSTGRES)
- laravel - VPS Ubuntu php artisan 命令不起作用
- r - 序列标记器
- c++ - 了解嵌套 For 循环以打印星号模式
- vb.net - 在VB中将空格转换为int会导致错误
- java - 有没有办法在给定条件的情况下只使用递归类型绑定字段?
- r - 我有一个包含 2 列的数据框。我可以将一列转换为行并保留另一列吗?