邮递员 - 在另一个测试中使用来自一个测试的部分响应数据

时间:2018-06-19 08:06:12

标签: postman

我需要帮助来执行邮递员测试,该测试需要来自另一个测试的响应输出。我已经检查了各种论坛,但是没有针对此特定方案的解决方案。

实施例

测试1回复:

{
"items": [
    {
        "email": "archer+qa01@gmail.com",
        "DocumentName": "tc",
        "type": "URL",
        "url": "https://localhost:8443/user/terms?statusno=a5f2-eq2wd3ee45rrr"
     }
  ]
}

测试2:

我需要仅使用 来自a5f2-eq2wd3ee45rrr的响应数据的Test 1部分,这可以在上面的url值中看到。我需要在Test 2

中使用此值

我怎样才能与Postman合作?

2 个答案:

答案 0 :(得分:4)

不能完全确定问题的响应数据格式是什么,但是如果它是仅具有url属性的简单对象,则可以使用类似以下的简单内容:

var str = pm.response.json().url
pm.environment.set('value', str.split('=', 2)[1])

然后,它将为一个变量设置所需的值,以便在下一个请求中使用POST请求正文中的{{value}}语法,或者在其中一个测试中使用pm.environment.get('value')脚本。

Postman

编辑:

如果url属性在数组中,则可以遍历它们并以这种方式提取值。这将设置变量,但是如果数组中有多个1 url属性,它将设置找到的最后一个。

_.each(pm.response.json(), (arrItem) => {
    pm.environment.set('value', arrItem[0].url.split('=', 2)[1])
})

Postman

答案 1 :(得分:0)

如果您收到JSON响应,然后在正文中发送JSON,我将执行以下操作:

1)在测试脚本(javascript)中:

var JsonBody = pm.response.json();
var strToParse = JsonBody.url;
var value = strToParse.slice(indexOf("?status=")+"?status=".length);//parse string 
//manually but you can google for a better solutions.
pm.environment.get("varName" , value) 

2)您可以使用它!在诸如pm.environment.get("varName")之类的脚本中,以及在其他任何地方使用{{varName}}