【发布时间】:2021-05-21 23:18:29
【问题描述】:
我正在使用 JMeter 来自动化性能测试用例。在 HTTP 请求之后,我使用 RegEx Post Extractor 来读取响应标头。这个响应头返回位置。位置是项目特定的 URL。我想从此 URL 读取状态变量的值。为此,我使用了 BeanShell PostProcessor。例如,
location: "http://www.google.com/state=asdas123123123123&query=asdasdas!@#"
我可以使用正则表达式提取器将响应标头的值读取为http://www.google.com/state=asdas123123123123&query=asdasdas!@#"
然后,我添加了 BeanShell PostProcesssor 来读取状态和查询。
import java.util.regex.*;
import java.util.regex.Matcher;
import java.util.regex.Pattern;
try{
//location = "http://www.google.com/state=asdas123123123123&query=asdasdas!@#"
String location = vars.get("location");
String pStr = "/state=(\\S+?)&/"";
Pattern patternN = Pattern.compile(pStr);
Matcher matcher = patternN.matcher(pStr);
if (matcher.find()) {
vars.put("variablename_1",matcher.group(0));
}
vars.put("variablename_2",location);
}catch (Exception ex) {
vars.put("variablename_ex",ex);
throw ex;
}
此代码不起作用。似乎双斜线造成了问题。
【问题讨论】:
-
将
String pStr = "/state=(\\S+?)&/"";替换为String pStr = "state=([^\\s&]+)";,然后使用vars.put("variablename_1",matcher.group(1));