【问题标题】:Jmeter. Iterating through .csv file with each loop with CSVRead万用表。使用 CSVRead 遍历每个循环的 .csv 文件
【发布时间】:2018-06-20 14:42:26
【问题描述】:

大家好!

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

我拥有的是:

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

我的测试看起来像:

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

我的第一个失败是使用与我在 CSV 数据集配置中使用的相同的变量来登录特定用户,例如。 G。 http://google.com.${__CSVRead(path\to\${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 等等(很接近,但还不够;),所以可能是我用错了“下一个”)

所以我的问题是:

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

感谢阅读,希望有人能帮忙。

【问题讨论】:

  • 我已经成功地完成了我的任务,只需将所需的测试数据放入单个 .csv 文件并通过 __StringFromFile 直接访问它,每个线程中的每个循环都会获得不同的数据值。哪个用户将使用该特定数据值并不重要,所以现在对我来说已经足够了。但我仍然对我最初提出的问题感到好奇

标签: csv jmeter


【解决方案1】:

如果您查看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 并将“共享模式”设置为“当前线程”。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-07-21
    • 2014-04-10
    • 2013-04-08
    • 1970-01-01
    • 2019-04-11
    • 2011-03-09
    • 1970-01-01
    相关资源
    最近更新 更多