在我的项目中,我使用 Jmeter 进行负载测试。
我创建了一个测试计划如下:
- 使用包含 10 个唯一用户名和密码的 csv 文件登录应用程序(成功完成)
- 正则表达式提取器将从响应中获取 session ID,该 session ID 将在下一个采样器中用于提交请求。 (sessionId提取成功)
下一个采样器将提交请求。此采样器接受两个参数:sessionId 和 licenseRequest。 java 脚本的一些细节如下:
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 Data Set Recycle on EOF
和 Stop Thread on EOF
值正确:
- 如果您计划多次遍历文件,则必须设置
Recycle on EOF = True
(即指示 jmeter 移回 CSV 文件的顶部); - 如果您使用的是循环 Controller ,则设置
在 EOF = False 时停止线程
,如果您使用的是 while Controller 并希望在之后停止,则设置在 EOF = True 时停止线程
读取整个 csv 数据集; - 如果您需要 N 个线程中的每一个都读取并使用来自 csv 文件的单个且唯一的行,您必须设置
Sharing mode: Current thread group
用于 CSV 数据集配置(csv 数- 在这种情况下,条目应与线程数相同,否则应设置Recycle on EOF? False
); - 如果您需要 N 个线程中的每一个都读取并使用 csv 文件中的所有行,则必须为 CSV 数据集配置设置
共享模式:当前线程
。
不要忘记查看 jmeter.log 或使用 Log Viewer检测 csv 使用的任何问题。
最简单的情况如下:
<b>Test Group</b>
Number of Threads = 10
<b>CSV Data Set Config (User Logins)</b>
Filename: ... (your csv-file should have 10 entries)
Recycle on EOF = False
Stop Thread on EOF = True
Sharing Mode = All threads
<b>CSV Data Set Config (License Request)</b>
Filename: ... (your csv-file should have 10 entries)
Recycle on EOF = False
Stop Thread on EOF = True
Sharing Mode = All threads
<b>Login Sampler</b>
<b>License request Sampler</b>
这将产生 10 个线程,每个线程都有来自 csv 的单独登录条目和许可请求条目。
关于json - 如何以 POST 方法从 csv 文件发送 JSON 数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14938950/