是否可以将此声明放在集合测试中,以便我
可以在我的每个请求测试中使用它,而不必每次都重写
时间?
我的回答:不,这是不可能的。
如果您想知道我是如何得出这个结论的,请继续阅读。
我做了一个简单的小实验。您可以按照下面的说明复制它。
我创建了一个名为 TestCollection 的 Postman 集合。
它可以从以下地址下载并保存到您的本地驱动器:
https://schulze.000webhostapp.com/postman/variables/TestCollection.pm_coll.json
然后 - 从 Postman 桌面应用程序(不是 chrome 扩展) -
TestCollection可以如下图导入。
要打开收藏窗口,请点击旁边的三个小圆圈
集合名称(工具提示:查看更多操作)。然后点击编辑,如
下图。
如下图所示,点击Tests标签。
集合测试的JavaScript sn-p是:
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 ...
...,然后在其 Tests 选项卡上,如下图所示。
(GET请求是https://postman-echo.com/get。-点击图片制作
它更大。)
请求测试的JavaScript sn-p是:
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代码sn-p(属于
请求)我们应该注释掉声明(和初始化)
jsonData 变量,然后看看请求发生时会发生什么
再次发送。
这样做的结果如下图所示。
如图所示,这会导致
ReferenceError: jsonData is not defined.
我认为这里发生的事情相当明显。一旦的范围
第二个 JS代码sn-p变活,第一个 JS代码的作用域
sn-p(属于集合)已经死了。
这意味着 - 在 第二个 代码 sn-p - jsonData 变量是
从未声明过。
要确认这个结果,请考虑如果 - 在第二个代码中会发生什么
仅限 sn-p - 我们(取消注释第 5 行并)将 jsonData 变量重命名为
说otherJson。
结果见下图。
确认! - 即使jsonData 集合 sn-p 和
请求的otherJson sn-p 包含完全相同的数据,它们是
仍然属于两个完全不同且不相关的 JavaScript 变量
到两个完全不同且不相关的范围。
想想这两个代码片段位于两个不同的文件中,如果有帮助的话。
参考文献: