如果我有一个带有以下脚本的BeanShell PostProcessor:
vars.put("avar", ${__unescapeHtml("<escele>esceleValue</escele>")});
vars.put("bvar", "<escele>esceleValue</escele>");
vars.put("cvar", ${__unescapeHtml(vars.get("bvar"))});
我在Debug PostProcessor中得到以下内容:
avar=<escele>esceleValue</escele>
bvar=<escele>esceleValue</escele>
cvar=<escele>esceleValue</escele>
我希望cvar的值与avar的值相匹配。有没有办法做到这一点?
最终,我试图获得如下声明,以便在响应数据中使用转义的XML。在这个过程中,我尝试了PostProcessor提取器,它成功地将所有响应数据放在一个变量中,然后尝试在上面的测试用例中解除变量。我假设使用变量或使用“prev.getResponseDataAsString()”时问题是相同的。
vars.put("avar", ${__unescapeHtml(prev.getResponseDataAsString())});
答案 0 :(得分:1)
我建议停止将JMeter Functions and/or Variables内联到支持脚本的测试元素,因为它可能会导致ValueReplacer出现意外行为,并且在JSR223 Sampler and Groovy language的情况下肯定会导致性能下降,因为包含变量和函数引用的脚本不能被编译成字节码。
鉴于你:
为什么不直接调用代码,如:
import org.apache.commons.lang3.StringEscapeUtils;
vars.put("avar", ${__unescapeHtml("<escele>esceleValue</escele>")});
vars.put("bvar", "<escele>esceleValue</escele>");
vars.put("cvar", ${__unescapeHtml(vars.get("bvar"))});
vars.put("dvar", StringEscapeUtils.unescapeHtml4(vars.get("bvar")));
log.info(vars.get("dvar"));