JMeter的。使用CSVRead迭代每个循环的.csv文件

时间:2018-01-11 09:56:59

标签: csv jmeter

美好的一天,大家!

我的目标是让每个线程用户使用他们自己的.csv文件,并在每个循环中从中获取不同的值。

我拥有的是:

  • 带有.csv文件路径的CSV数据集配置元素我用于登录用户(为此目的在CSV数据集配置中指定USER变量,暂时没有密码),其中包含user1和user2值。
  • 两个单列.csv文件,分别名为user1和user2,用于使用它们的用户名。
  • 此文件中的每一个都包含一个值为user1(或user2分别为文件名)_test1,user1_test2等的列。

我的测试看起来像:

  • 登录
  • HTTP GET请求,包含来自特定用户的csv文件的变量(如http://google.com。$ {__ CSVRead(path \ to \ file.csv,0)})

我的第一个失败是使用我在CSV数据集配置中使用的用于登录特定用户的相同变量,例如。 G。 http://google.com。$ {__ CSVRead(路径\为\ $ {USER}的.csv,0)}。但jmeter只发送http://google.com.user1_test1而不是发送http://google.com请求。 我在CSVRead函数之外检查了USER变量,它运行正常,所以我不知道在将它传递给函数时我做错了什么。

当我在请求中使用.csv的静态路径时(http://google.com。$ {__ CSVRead(path \ to \ file \ user1.csv,0)})我发现每个user1循环使用第一个变量每次都来自user1.csv,所有user2循环只使用第二个变量。

当我做类似的事情时:

http://google.com。$ {__ CSVRead(path \ to \ file \ user1.csv,0)} $ {__ CSVRead(path \ to \ file \ user1.csv,next)}我得到:

http://google.com.user1_test2http://google.com.user1_test4等等(关闭,但还不够;),我可能会使用" next"错误的方式)

所以我的问题是:

  • 有没有办法将变量传递给CSVReader文件路径?
  • 有没有办法让Jmeter在每个循环而不是每个线程中使用CSVRead函数迭代一个.csv文件?

感谢阅读,我希望有人可以提供帮助。

1 个答案:

答案 0 :(得分:0)

如果您查看functions manual,这可能是一个逃避问题

  

在Windows路径的变量之前使用\,例如C:\ test \ $ {test}时,请确保转义\,否则JMeter不会解释变量,例如:C:\ test \ $ {test}。

所以你需要更改为$ {__ CSVRead(path \ to \ $ {USER} .csv,0)}

但回答您的第二个问题,我建议您按CSV Data Set Config中的建议使用__CSVRead

  

在大多数情况下,较新的CSV数据集配置元素更易于使用。

CSV数据集配置可以更容易地迭代循环中的行,并有更多选项来控制其流程。

  

如果您希望每个线程都有自己的一组值,那么您需要创建一组文件,每个线程一个。例如test1.csv,test2.csv,...,testn.csv。使用文件名test {$ __ threadNum} .csv并将“共享模式”设置为“当前线程”。