这个场景曾经在今年的Postman的前一个版本中工作:
- 在预请求脚本中调用
postman.setGlobalVariable('test', 'my_value')
- 让预请求脚本通过抛出错误来完成(这是必需的,因为我必须验证环境变量)
- Postman请求执行后(请求前脚本中抛出错误),值为
my_value
的全局变量test
在Globals列表中可用
在Postman的当前(5.2.1
)版本中,全局变量不会从引发错误的预请求脚本中持久化。
- 有办法实现这一点吗
- 有办法解决这个问题吗
我的用例是实现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);
}
我认为这样的东西可以满足你的要求。。。