无法移动到变量完全响应 - Groovy Jmeter

时间:2017-10-17 13:21:31

标签: groovy jmeter beanshell

我在Jmeter中遇到过我无法解决的问题。 我想创建一个发送请求并获得响应的测试。 响应是url编码。 所以首先我需要将响应放在变量中,而不是url解码它。 1.我创建了正则表达式并将响应放在变量名称“full_response”中,它按预期保存,如您在结果中看到的那样。 2.我创建了一个groovy采样器步骤,只想传递“full_response”并打印它,以便知道它已通过OK。 它并不打印所有响应只是3个字母。 (我认为因为响应是URL ENCODE)。 有人可以建议如何将此变量传递给groovy脚本?而不是打印吗? 目的是url解码结果并对其进行断言!! 我如何将结果放在groovy sampler中的“reponse_before_decode”变量中,而不是url解码它。 在调试采样器中我看到我在groovy采样器中创建的response_before_decode变量 是因为回应是特殊的字符吗?而且我不能完整地传递它>? (参见正则表达式的完整响应变量中的响应) 问候

def reponse_before_decode = args[0] as String;
def reponse_before_decode_2 = args[0];

System.out.println ("re" + '$full_response');
System.out.println ("full" + reponse_before_decode_2);
System.out.println ("full" + reponse_before_decode);

enter image description here

enter image description here

enter image description here

enter image description here

1 个答案:

答案 0 :(得分:1)

  1. 永远不要在${full_response}之类的Groovy脚本中引用JMeter变量或函数,而是使用vars.get('full_response'),因为它可能与GStringTemplates冲突
  2. 您不需要正则表达式提取器临时步骤,您可以从JSR223采样器访问以前的采样器结果,如:

    def reponse_before_decode = ctx.getPreviousResult().getResponseDataAsString()
    

    其中ctx代表JMeterContext类实例

  3. 最后JMeter附带__urlDecode() function,您可以使用它来解码x-www-form-urlencoded字符串。请参阅Apache JMeter Functions - An Introduction以熟悉JMeter Functions概念。