2016-10-03 99 views
0

每个线程是否可以从CSV文件中选择相同的行?Jmeter:参数设置

例如。我有5个用户,只有5个记录(行)在我的CSV文件中。在每次迭代中,来自CSV的第一个值应该分配给User1,对于所有用户也是如此。

User1: myID1,pass1,item1,product1 
User2: myID2,pass2,item2,product2 
User3: myID3,pass3,item3,product3 
User4: myID14,pass4,item4,product4 
User5: myID15,pass5,item5,product5 

。 。 任何解决方案,请?

+0

你会有多少个线程? –

回答

1
  1. 如果你只有5个线程和5行CSV我建议考虑切换到User Parameters而不是使用CSV。
  2. 如果您的CSV文件可以具有> 5行,并且您的测试可以具有> 5个虚拟用户,并且像“用户1占线1”这样的需求是必须的,那么您必须将CSV文件预加载到内存中脚本测试元件像Beanshell Sampler一样:

    • 添加的setUp线程组的测试计划(与1线和1次迭代)
    • 添加BeanShell中取样,并把下面的代码为“脚本”区域:

      import org.apache.commons.io.FileUtils; 
      
      List lines = FileUtils.readLines(new File("test.csv")); 
      bsh.shared.lines = lines; 
      

    上面的代码将读取test.csv文件(以CSV文件的相对或完整路径替换它)的内容,并将其存储到bsh.shared namespace

    • 添加BeanShell的预处理器的请求的孩子,你需要从CSV文件中使用的值,并把下面的代码为“脚本”区域:

      int user = ctx.getThreadNum(); 
      String line = bsh.shared.lines.get(user); 
      
      String[] tokens = line.split(","); 
      
      vars.put("ID", tokens[0]); 
      vars.put("pass", tokens[1]); 
      vars.put("item", tokens[2]); 
      vars.put("product", tokens[3]); 
      

    上面的代码将从列表,ST取线或运算在bsh.shared命名空间基础上目前的虚拟用户数,由逗号分割它和值存储到JMeter的变量,这样你就可以访问它们为:

    • ${ID}
    • ${pass}
    • ${item}
    • ${product}

有关在JMeter测试中使用Beanshell脚本的更多信息,请参阅How to Use BeanShell: JMeter's Favorite Built-in Component指南。

+0

问题已解决。万分感谢 – PerfMatrix