如何在JMeter中的JDBC请求采样器中使用FOrEach循环和正则表达式提取器

时间:2011-07-29 10:18:51

标签: jmeter

我已经配置了与mysql的JDBC连接 我添加了JDBC采样器和监听器 但我想用正则表达式提取器提取细节,然后进入foreach循环 在ForEach循环中,我想执行HTTP请求。

我的结果窗口显示为:

empid   empname empDesgination
10          lee     jrtester
10          lee     MURAEE
123         lee     MURAEE
1234567890  leeee   MURALEE
1234567890  lee     MURALEE

请解释以下几点:

  • 如何编写正则表达式提取器(即正则表达式)?
  • 如何从中提取?
  • 我应该在ForEach循环输入变量和输出变量中输入什么?

因为,根据所提供的信息,我已经处理了JDBC,但它没有提取数据并进入循环。请你解释一下我们编写的Exactly Regex表达式来提取上述数据。我们为Http请求采样器提供引用名称${VAR_out}。请用Regex,ForEach和Http Sampler向我全程报告。

请提供关于JDBC采样器的简单示例使用正则表达式提取器提取数据并进入ForEach循环。

2 个答案:

答案 0 :(得分:5)

我最近解决了这个问题,请尝试以下步骤:

  1. 创建HTTP请求以下拉响应数据
  2. 创建一个正则表达式提取器作为HTTP请求的子级。并设置以下内容
    • 设置您的引用名称(后面将成为脚本中的变量名称)
    • 设置你的正则表达式(这里有一些很好的帮助:http://jmeter.apache.org/usermanual/regular_expressions.html
    • 设置模板(再次查看上面的网址,了解模板信息)
    • 将匹配编号设置为-1(这允许您将所有捕获的结果保存到一个变量)
  3. 现在在HTTP Sample下面创建一个ForEach控制器,将“输入变量前缀”设置为您给出正则表达式提取器的参考名称,将“输出变量名称”设置为您喜欢的任何内容(如tmpvar)并选中“添加” _“在号码前”复选框
  4. 在ForEach控制器下创建一个HTTP请求,并使用您的varibale $ {tmpvar}设置Server或Path,并且应该为正则表达式提取器找到的每个命中运行HTTP请求。

答案 1 :(得分:0)

要写一个正则表达式,请看这个梦幻般的网站:http://www.regular-expressions.info/ Jmeter使用PERL作为它的正则表达式,你会在这里找到你需要知道的一切。另请参阅manual for regular expression extractor有关如何设置控制器的信息。如果你想循环遍历每个结果,你需要一个负匹配数字(见手册)。

foreach controller manual起初可能会有些混乱。在ForEach Input Variable中 - 输入您在Reference Name下的正则表达式提取器中声明的变量。在输出字段中,输入采样器的变量参考。

大概是这样的:

Regex controller:
      Reference Name: VAR_in

For Each:  
    Input: VAR_in
    Output: VAR_out

Sampler:
    reference ${VAR_out}