Apache Jmeter从csv文件中读取SQL变量

时间:2013-11-14 03:54:20

标签: jmeter

需要加载测试Oracle数据库的要求是同时向数据库发送SQL查询从CSV文件读取变量这是否可行?

拥有包含

等值的CSV文件
Name        Email
Justin      justin@beiber.com
George      george@washington.com
...
Micheal     micheal@jackson.com

然后有10,20,30个用户查询,例如

select name,phone,city
from address
where name = <<feild1-from-csv>>
and email = <<feild2-from-csv>>
...

1 个答案:

答案 0 :(得分:0)

我建议将测试逻辑拆分为两个单独的部分:

  1. 从CSV加载信息并将其存储为JMeter变量
  2. 使用第1点的变量
  3. 对Oracle执行SQL代码

    关于实现,我建议使用2个单独的线程组,第一个将从CSV加载东西,第二个将进行实际测试。

    重要提示:不要忘记在TestPlan级别选中“连续运行线程组”框,以确保第二个线程组在第一个线程组之后运行

    第1个线程组的配置示例:

    1. 计数器

      • 开始 - 1
      • 增量 - 1
      • 参考名称 - 计数器
    2. CSV Data Set Config

      • 文件名 - csv文件的路径
      • 变量名称 - 名称,电子邮件
      • 分隔符 - 如果您使用TAB - “\ t”,如果逗号 - “,”不带引号
      • 允许引用的数据 - 错误
      • 回收EOF - 错误
      • 在EOF上停止线程 - True
      • 分享模式 - 所有主题
    3. Beanshell Sampler(这个是可选的,JMeter 2.10足够聪明,可以为你存储变量,但我更喜欢自己控制一切)

    4. Beanshell采样器的代码应如下所示:

      props.put("name" + vars.get("counter"), vars.get("name"));
      
      props.put("email" + vars.get("counter"), vars.get("email"));
      

      它获取当前的“name”变量并将其存储为name + counter属性。

      因此,如果3行是CSV文件,您将拥有以下属性:

      name1=Justin
      email1=justin@beiber.com
      name2=George 
      email2=george@washington.com
      name3=Micheal
      email3=micheal@jackson.com
      

      您可以使用Debug Sampler查看JMeter变量和属性值

      在第二个线程组中,您可以将存储的属性称为:

      ${__P(name1,)}
      

      ${__property(name1,,)}
      
      JDBC请求采样器中的

      两者都应该有用。