You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何捕获请求1生成的动态值并传递至其他请求(邮箱示例)

如何捕获JMeter请求中生成的动态邮箱值并传递到后续请求

我来帮你搞定这个问题!你现在的需求是把请求1里用${__Random(0000,9999)}+tester@testing.com生成的具体邮箱值抓出来,传给下一个请求对吧?有两种靠谱的方法,看你哪种更适合:

方法1:提前生成并存储变量(最推荐)

这种方法从根源上避免了“捕获”的麻烦,直接把生成的邮箱先存成JMeter变量,后续所有请求都直接用这个变量就行:

  • 第一步:生成并存储变量
    • 方式一:用用户定义的变量元件。在测试计划/线程组下右键 → 添加 → 配置元件 → 用户定义的变量。新增一行,变量名比如dynamic_email,变量值填${__Random(0000,9999)}tester@testing.com(如果你的业务确实需要邮箱里带加号,就保留+写成${__Random(0000,9999)}+tester@testing.com)。
    • 方式二:用前置处理器生成。添加一个BeanShell前置处理器到线程组最开头,输入代码:
      String randomNum = __Random(0000,9999);
      vars.put("dynamic_email", randomNum + "tester@testing.com");
      
  • 第二步:在请求1的参数里,直接用${dynamic_email}作为邮箱值。
  • 第三步:后续请求需要用到这个邮箱时,直接引用${dynamic_email}就可以了,完全不用额外捕获。

方法2:从请求1的请求数据中提取已生成的邮箱

如果你已经在请求1里直接写了表达式,不想改动现有配置的话,可以通过正则表达式提取器抓出实际发送的邮箱:

  • 第一步:在请求1下面添加一个正则表达式提取器(右键请求1 → 添加 → 后置处理器 → 正则表达式提取器)。
  • 第二步:配置提取器参数:
    • 引用名称:比如captured_email(后续用来引用的变量名)
    • 响应字段:选择请求数据(我们要抓的是请求里发送的邮箱,不是接口响应)
    • 正则表达式:根据实际发送的邮箱格式写,比如如果生成的是1234tester@testing.com,正则就写(\d{4}tester@testing.com);如果带加号就是(\d{4}\+tester@testing.com)
    • 模板:$1$(表示取正则匹配到的第一个分组内容)
    • 匹配数字:1(取第一个匹配结果)
  • 第三步:在后续请求里,用${captured_email}就能引用到捕获到的邮箱值了。

小提示

  • 如果你不确定请求里实际发送的邮箱格式,可以先运行一次请求,在查看结果树的“请求”标签页里确认格式后再写正则。
  • 方法1更稳定,因为变量是提前生成的,不会出现捕获失败的情况,优先推荐这种方式。

内容的提问来源于stack exchange,提问作者hikarthiks

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 08:14:37