您好我传递的电子邮件是时间函数,如下所示
email = ${__time(MMddyy)}_${__time(HMS)}@yopmail.com
此函数的值更改eveytime我调用变量email。 我想将此函数生成的值存储到变量中,并在其他请求中使用它。
所以目前我在两个不同的http请求中收到两封不同的电子邮件,因为我的两个http请求之间存在一段时间差。
我想要做的是..通过从请求中提取值并在第二个http请求中传递它来存储第一个http请求中发送的电子邮件。
POST data:
email=062915_160738%40yopmail.com
我知道从html响应中提取的方法..但有没有办法从jmeter中提取请求?
若有人可以告诉我如何实现这个目标?
谢谢
答案 0 :(得分:3)
将以下代码放入PostProcessor"脚本"区域
${EMAIL}
email
。 澄清:
EMAIL
请求参数(如果有)的值并将其存储到ctx
JMeter变量vars
- JMeterContext班级实例的简写Arguments
= JMeterVariables班级实例的简写Argument
和item_id item_details item_type
1 'some detail' 1
2 'some detail' 1
3 'some other detail' 2
4 'some other detail' 2
- 您可以从JMeterContext JavaDoc 有关JMeter中Beanshell脚本的更多信息,请参阅How to use BeanShell: JMeter's favorite built-in component指南。
答案 1 :(得分:0)
您可以将时间戳值存储在变量中,然后使用此时间戳变量在任意位置创建电子邮件,而不是整个电子邮件。 通过这种方式,您可以在每个地方都收到相同的电子邮件。
答案 2 :(得分:0)
是HTTP采样器吗?如果是这样,只需加入beanshell后处理器:
extern void *_sidata, *_sdata, *_edata;
extern void *_sbss, *_ebss;
void __attribute__((naked, noreturn)) Reset_Handler()
{
//Normally the CPU should will setup the based on the value from the first entry in the vector table.
//If you encounter problems with accessing stack variables during initialization, ensure
//asm ("ldr sp, =_estack");
void **pSource, **pDest;
for (pSource = &_sidata, pDest = &_sdata; pDest != &_edata; pSource++, pDest++)
*pDest = *pSource;
for (pDest = &_sbss; pDest != &_ebss; pDest++)
*pDest = 0;
SystemInit();
__libc_init_array();
main();
for (;;) ;
}
也适用于任何采样器:
String prevQuery = prev.getQueryString(); //your request text
System.out.println(prevQuery );
答案 3 :(得分:0)
您可以使用正则表达式提取器从请求URL中提取电子邮件地址。
将正则表达式提取器添加为发送帖子请求的采样器的子级。 在正则表达式提取器中,选择响应提交中的 URL 以检查而不是正文。
您应该能够以这种方式从请求中提取电子邮件ID。
答案 4 :(得分:0)
添加一个 Beanshell 后处理器并添加以下脚本:
import org.apache.jmeter.config.Argument;
import org.apache.jmeter.config.Arguments;
Arguments argz = ctx.getCurrentSampler().getArguments();
for (int i = 0; i < argz.getArgumentCount(); i++) {
Argument arg = argz.getArgument(i);
String req_body = arg.getValue();
vars.put("req_Json",req_body);
}
这里我们得到json格式的输出:
${req_Json}=
"email":"062915_160738%40yopmail.com",
"name":"abc xyz"
现在使用 jp@gc Json Path Extractor 提取 email 的值
Json expression = $['email']
并将值存储在 email_value_extacted
现在在您想使用的任何地方使用变量 ${email_value_extacted}
。
最后,
${email_value_extacted} = 062915_160738%40yopmail.com