如何从必须抛出验证错误的预请求脚本中保存Postman中的全局变量



这个场景曾经在今年的Postman的前一个版本中工作:

  • 在预请求脚本中调用postman.setGlobalVariable('test', 'my_value')
  • 让预请求脚本通过抛出错误来完成(这是必需的,因为我必须验证环境变量)
  • Postman请求执行后(请求前脚本中抛出错误),值为my_value的全局变量testGlobals列表中可用

在Postman的当前(5.2.1)版本中,全局变量不会从引发错误的预请求脚本中持久化。

  1. 有办法实现这一点吗
  2. 有办法解决这个问题吗

我的用例是实现DELETE REST调用的保护,以避免无意中删除服务器端对象。用户必须发送相同的请求(按send)给定的次数,以确保他真的想执行这个请求。这是通过使用全局变量实现的,并且一直有效到最近。

我认为如果您将url设置为全局或环境变量并在请求中使用{{url}},您可以找到一个变通方法。

如果是这样,在预请求脚本中,您可以将其设置为无效值,这样可以避免发送正确的请求,并且将设置其他全局。

你可以将更新条件设置为一定的点击量,或者其他什么,你可以在其他全局中设置。即

var counter = postman.getGlobalVariable('counter'); 
if (counter == undefined)
{
postman.setGlobalVariable('counter', 0); // initialize counter if not exists
}
var validurl= postman.getGlobalVariable('valid_url') 
var current_url= postman.getGlobalVariable('url') // keep the current url which is valid
if (validurl == undefined)
{ 
postman.setGlobalVariable('valid_url', current_url) // store the valid url if not done yet
}

counter = parseInt(counter) + 1 // then if you call it three times it should execute ...
console.log("info counter " + counter)
postman.setGlobalVariable('counter', counter)
if (counter < 3) // let say three tries, to be sure
{
pm.globals.set("url", "dummy"); // other syntax, no matter => request fails
}
else
{ 
// set back url
pm.globals.set("url", validurl);
}

我认为这样的东西可以满足你的要求。。。

相关内容

  • 没有找到相关文章

最新更新