在邮递员中,我几乎每次执行每个请求序列后都会执行此测试:
var jsonData = pm.response.json();
// Do something useful with jsonData variable
是否可以将此声明放入收集测试中,以便我可以在每个请求测试中使用它,而不必每次都重写它?
当前,如果我将其设置在集合测试中,然后尝试在请求测试中使用变量jsonData
,则该变量不存在。
我可以在全局变量或环境变量中设置它,但这似乎不是正确的方法。
答案 0 :(得分:1)
根据Postman数据变量(如JSON)应用作全局/环境变量:
使用收集运行器,您可以导入CSV或JSON文件,然后在HTTP请求和脚本中使用数据文件中的值。我们称这些为“数据变量”。
要在Postman中使用它们,请遵循与环境或全局变量相同的语法。
因此,HKEY_LOCAL_MACHINE\SOFTWARE\...
使用pm.environment.set()
或pm.globals.set()
答案 1 :(得分:0)
是否可以将此声明放在集合测试中,以便我 可以在我的每个请求测试中使用它,而不必每次都重写它 时间?
我的回答:不,这是不可能的。
如果你想知道我是如何得出这个结论的,请继续阅读。
我做了一个简单的小实验。您可以按照以下说明进行复制。
我创建了一个名为 TestCollection
的 Postman 集合。
它可以从以下位置下载并保存到本地驱动器:
https://schulze.000webhostapp.com/postman/variables/TestCollection.pm_coll.json
然后 - 从 Postman 桌面应用程序(不是 chrome 扩展) -
TestCollection
可以如下图导入。
要打开收藏窗口,请点击旁边的三个小圆圈 集合名称(工具提示:查看更多操作)。然后点击编辑,如 下图。
如下所示,点击测试标签。
用于测试集合的 JavaScript 代码段是:
pm.test('Collection Test', function () {
pm.response.to.have.status(200);
});
console.log('Hello from Collection Test!');
const jsonData = pm.response.json();
console.log('Collection Test says URL = ' + jsonData.url);
在这种情况下,// Do something useful with jsonData variable
问题是在控制台打印请求的URL。
接下来点击 TestCollection-Request
...
...,然后在其测试选项卡上,如下图所示。
(GET 请求是 https://postman-echo.com/get
。- 点击图片制作
它更大。)
用于测试请求的 JavaScript 代码段是:
pm.test('Request Test', function () {
pm.response.to.have.status(200);
});
console.log('Hi from Request Test.');
const jsonData = pm.response.json();
console.log('Request Test says user-agent = ' +
jsonData.headers['user-agent']);
问题的// Do something useful with jsonData variable
是
现在在控制台中打印请求的 user-agent
。
点击蓝色的发送按钮...
... 然后打开左下角的 Console
。
控制台中的输出显示集合测试在 请求测试。
要回答提出的问题,在第二个 JS 代码片段(属于
请求)我们应该注释掉声明(和初始化)
jsonData
变量,然后看看当请求被
再次发送。
这样做的结果如下图所示。
如图所示,这会导致
ReferenceError: jsonData is not defined
。
我认为这里发生的事情很明显。一旦范围
第二个 JS 代码片段变成活的,第一个 JS 代码的作用域
片段(属于集合)已经死了。
这意味着 - 在第二个代码片段中 - jsonData
变量是
从未声明。
为了确认这个结果,考虑如果 - 在第二个代码中会发生什么
仅代码段 - 我们(取消注释第 5 行并)将 jsonData
变量重命名为
说otherJson
。
见下图结果。
确认! - 尽管 集合 的 jsonData
片段和
请求片段的otherJson
包含完全相同的数据,它们是
仍然属于两个完全不同且不相关的 JavaScript 变量
到两个完全不同且不相关的范围。
如果有帮助,可以考虑将两个代码片段放在两个不同的文件中。
参考资料: