【问题标题】:How to send JSON data from csv file in POST method?如何在 POST 方法中从 csv 文件发送 JSON 数据?
【发布时间】:2013-02-18 14:47:28
【问题描述】:

在我的项目中,我使用 Jmeter 进行负载测试。
我创建了一个测试计划如下:

  1. 使用具有 10 个唯一用户名和密码的 csv 文件登录应用程序(成功完成)
  2. 正则表达式提取器将从响应中获取会话 ID,该会话 ID 将在下一个采样器中用于提交请求。 (sessionId提取成功)
  3. 下一个采样器将提交请求。此采样器接受两个参数:sessionId 和 licenseRequest。 java-script的一些细节如下:

    url: "groovy/enqueue",
    type: "POST",
    global: false,
    data: {sessionId: uSessionId, licenseRequest: JSON.stringify(requestJSON) },
    dataType: "text",
    

为了提交请求,我创建了一个 csv 文件。
csv 类似这样:

条目 1:
{"activations":["<activation-code>","<activation-code>"],"email":"<emailIdofUser>","csvEntries":[{"model":"<modelname>","serial":"<serialNo>"}],"comment":"testing jmeter"}

我发现,在第二个采样器中提交请求时,发布请求格式不正确:

POST data:
sessionId=vZNjFjW38cid&licenseRequest=%3CEOF%3E

如您所见,licenseRequest 的值不正确。它正在发送 EOF,这是不需要的。

【问题讨论】:

  • 当我将 csv 条目作为参数传递给采样器时,它起作用了。使用 csv 的目的是我想向不同的用户提供大量的 submitRequest。

标签: json csv jmeter load-testing


【解决方案1】:

确保您拥有正确的 CSV Data Set Recycle on EOFStop Thread on EOF 值:

  • 如果您计划多次遍历文件,则必须设置 Recycle on EOF = True(即指示 jmeter 移回 CSV 文件的顶部);
  • 如果您使用的是循环控制器,请设置Stop Thread on EOF = False,如果您使用的是while控制器并希望在读取整个csv数据集后停止,请设置Stop Thread on EOF = True
  • 如果您需要 N 个线程中的每一个从 csv 文件读取并使用单个且唯一的行,您必须为 CSV 数据集配置设置 Sharing mode: Current thread group(在这种情况下,csv 条目的数量应与线程数,否则应设置Recycle on EOF? False);
  • 如果您需要 N 个线程中的每一个线程读取并使用 csv 文件中的所有行,您必须为 CSV 数据集配置设置 Sharing mode: Current thread

不要忘记查看 jmeter.log 或使用 Log Viewer 来检测 csv 使用的任何问题。


最简单的情况如下:


Test Group
Number of Threads = 10
    CSV Data Set Config (User Logins)
    Filename: ... (your csv-file should have 10 entries)
    Recycle on EOF = False
    Stop Thread on EOF = True
    Sharing Mode = All threads
    CSV Data Set Config (License Request)
    Filename: ... (your csv-file should have 10 entries)
    Recycle on EOF = False
    Stop Thread on EOF = True
    Sharing Mode = All threads
    Login Sampler
    License request Sampler

这将产生 10 个线程,每个线程都有来自 csv 的单独登录条目和许可证请求条目。

【讨论】:

  • 我的测试计划目标如下: 1. 用户将登录到应用程序。将使用 csv 提供一组有效的用户名、密码(例如,没有 csv 条目 10) 2. 正则表达式提取器将从响应中获取用户会话 ID,并将使用从每个用户捕获的会话 ID 提交一个新请求。提交请求也将来自另一个 csv 文件(实际上是 json 值) 3. 提交请求后,用户将使用他们的会话 ID 注销(http 请求)。您能否建议制定上述测试计划的最佳实践?
  • 嗯,我已经从你的问题中得到了你的场景。我已经指出了您必须研究和正确配置以使您的方案按您想要的方式工作的时刻。查看使用可能架构更新的答案。
  • 这真的很有帮助!谢谢
猜你喜欢
  • 1970-01-01
  • 2012-05-13
  • 1970-01-01
  • 1970-01-01
  • 2016-12-24
  • 2018-01-08
  • 2015-10-03
  • 2023-03-03
  • 2021-04-09
相关资源
最近更新 更多