我想知道我是否遇到了Postman中的错误,或者这是否是设计错误。
我有一个案例,其中有2个请求:
在请求1中,我捕获了完整的private void TextBox_PreviewKeyDown(object sender, KeyEventArgs e)
{
char character = GetCharFromKey(e.Key);
e.Handled = false;
if (character >= '0' && character <= '9')
return;
if (character == '.')
return;
switch(e.Key)
{
case Key.Delete:
case Key.Back:
return;
}
e.Handled = true;
}
。
在请求2(responsebody
)中,我需要将已捕获的put
请求1作为responsebody
提供给请求2 但,并且确定的变化很小布尔值。
在其他请求(requestbody
)中,我执行与请求2相同的操作。因此,请从捕获的put
请求1开始。
因此我使用了以下方法:
请求1 - 测试脚本:
responsebody
请求2 - 请求前脚本:
pm.environment.set("Filter-get_responsebody", pm.response.json());
因此,在请求2的预请求脚本中,我的原始环境变量(var res_body = pm.environment.get("Filter-get_responsebody");
console.log(pm.environment.get("Filter-get_responsebody"));
//==>returns the full json response as captured in request 1
res_body.Filters[2].List[0].Checked = true;
console.log(pm.environment.get("Filter-get_responsebody"));
//==>returns the full json response but already with the updated boolean done in the var res_body
res_body.Filters[2].IsChanged=true;
console.log(pm.environment.get("Filter-get_responsebody"));
//==>returns the full json response but already updated by the 2 changes on var res_body
pm.environment.set("ProductList-Put-SelectFirstFuelType-RequestBody",JSON.stringify(res_body));
)获取更新的值,尽管我没有直接更改其值。而是在第一行,我将环境变量值存储到本地脚本变量(Filter-get_responsebody
)中。这样做允许我在其他请求中重用请求1的原始响应主体。
所以我的问题是:为什么环境变量在没有直接改变的情况下获得更新的值。这是邮递员脚本引擎中的错误吗?我已经设置了一个虚拟测试,其中我有2个请求使用相同的方法,但我没有使用JSON对象,而是使用字符串值来放置和更新环境变量。在这种情况下,不会覆盖值。但是,在更新JSON时(如上所述),它会直接在环境变量中覆盖该值。