Paw - 使用特定环境获取最后一次请求

时间:2016-08-12 16:15:51

标签: paw-app web-api-testing

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

以下是该方案:

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?

1 个答案:

答案 0 :(得分:3)

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

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

  1. 在您的环境中选择分区变量 step1

  2. 在请求1中为分区环境变量设置X-paw-env标头。这样,您可以根据环境获取分区变量的当前值 step 2

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

  4. 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();
    		}
    	}
    
    };