如何从Jmeter中的请求中提取值

mo0*_*206 6 jmeter

嗨,我正在传递一封电子邮件,它是一个时间函数,如下所示

email = ${__time(MMddyy)}_${__time(HMS)}@yopmail.com
Run Code Online (Sandbox Code Playgroud)

这个函数的值在我每次调用变量 email 时都会改变。我想将从这个函数生成的这个值存储到一个变量中,并在其他请求中使用它。

所以目前我在两个不同的 http 请求中收到两封不同的电子邮件,因为我的两个 http 请求之间存在一些时间延迟。

我想做的是..通过从请求中提取值并将其传递到第二个http请求中来存储在第一个http请求中发送的电子邮件。

POST data:
email=062915_160738%40yopmail.com
Run Code Online (Sandbox Code Playgroud)

我知道从 html 响应中提取的方法..但是有什么方法可以从 jmeter 中的请求中提取吗?

如果是这样,有人可以告诉我如何实现这一目标吗?

谢谢你

Dmi*_*i T 5

  1. 添加一个 Beanshell PostProcessor 作为发送该 POST 请求的请求的子级
  2. 将以下代码放入后处理器的“脚本”区域

    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);
        if (arg.getName().equals("email")) {
            vars.put("EMAIL", arg.getValue());
            break;
        }
    }
    
    Run Code Online (Sandbox Code Playgroud)
  3. ${EMAIL}在需要的地方引用生成的值。

澄清:

  • 上面的代码将提取email请求参数的值(如果有)并将其存储到EMAILJMeter 变量
  • ctx- JMeterContext类实例的 简写
  • vars= JMeterVariables类实例的简写
  • ArgumentsArgument- 你可以从 JMeterContext JavaDoc 中找出来

有关JMeter 中Beanshell 脚本的更多信息,请参阅如何使用 BeanShell:JMeter 最喜欢的内置组件指南。


san*_*3hi 1

您可以将时间戳值存储在变量中,然后使用此时间戳变量在您想要的任何位置创建电子邮件,而不是整个电子邮件。这样您就可以在任何地方拥有相同的电子邮件。