3

我正在尝试使用解析响应中的动态字段。解析的响应必须针对使用特定环境发出的最后一个请求。这可能吗?

这是场景:

1. Make Request 1 using Environment A
    Receive Response A1
2. Make Request 1 using Environment B
    Receive Response B1
3. Make Request 2 using environment A, with field from parsed response A1
    Receive Response A2
4. Make Request 2 using environment B, with field from parsed response B1
    Receive Response B2

如何编排步骤 3 和 4?

4

1 回答 1

3

我们计划通过使用 MacOS Sierra 上的选项卡来正确实施它。将每个选项卡操作作为专用会话,您将环境选择固定到选项卡。

这尚未在 Paw 中正确实现,但您可以为此编写自定义动态值或使用 hacky 解决方法:

  1. 在您的环境中选择一个分区变量 步骤1

  2. 在请求 1 中设置一个X-paw-env标头分区环境变量。这样您就可以根据环境获得分区变量的当前值 第2步

  3. 在您使用Response Parsed Body插入Custom动态值的字段中的请求 2 中。里面有请求 1 的最新交换,其中请求标头与当前环境的分区变量的值匹配。然后使用RegExp Match从响应正文中提取您需要的值 第三步

function evaluate(context){
	var variableValue = 	context.getEnvironmentVariableByName("myPartitioningVariable").getCurrentValue()

	var exchanges = context.getRequestByName("Request1").getAllExchanges();
	for (var i = 0; i < exchanges.length; i++) {
		console.log(i, exchanges[i].requestHeaders["X-paw-env"]);
		if (variableValue === exchanges[i].requestHeaders["X-paw-env"]) {
			var dv = new DynamicValue("com.luckymarmot.RegExMatch", { re: '"user":\\s*"([^"]*)', input: exchanges[i].responseBody });
			console.log(exchanges[i].responseBody)
			console.log(i, "returning")
			return dv.getEvaluatedString();
		}
	}

};

于 2016-08-16T17:14:10.290 回答