我有以下设置:
我尝试做的是检索电子邮件,从中提取一个值,然后在下一个请求中将其作为变量传递。
问题是检索到的电子邮件的格式如下:
我瞄准的信息位于"第1部分"。这导致我的问题... jMeter无法提取它,因为它是一个子子样本。 如果所需的变量位于"消息1"部分,然后jMeter正在提取值而没有任何问题,然后将其传递给下一个请求。
我的RegEx设置是"适用于主样本和子样本",所以从理论上讲,这不应该是一个问题..但显然是。
当检索到的电子邮件包含多个子部分时,如何让jMeter提取所需值?
答案 0 :(得分:0)
不幸的是,正则表达式提取器仅处理直接子样本,因此在多部分电子邮件的情况下,您将只能提取This is a multipart message in MIME format.
行,这不是很有用。
我建议您添加Beanshell PostProcessor作为Mail Reader Sampler的子项,但之前使用正则表达式提取器并使用以下代码:
import org.apache.jmeter.samplers.SampleResult;
StringBuilder response = new StringBuilder();
for (SampleResult message : prev.getSubResults()) {
response.append(message.getResponseDataAsString());
for (SampleResult part : message.getSubResults()) {
response.append(part.getResponseDataAsString());
}
}
prev.setResponseData(response.toString(), "UTF-8");
上面的代码将遍历所有消息及其部分,提取响应数据并用这些消息的实际内容替换Mail Reader Sampler的默认响应数据X messages found
,这样您就可以了能够使用正则表达式提取器进行关联。
有关在JMeter测试中使用脚本的全面信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component文章。