如何处理请求的一部分并在Jmeter的下一个请求中使用它?
我正在尝试记录一个应用程序,登录后我们最初显示100行 . 当我们滚动超过100行时,延迟加载调用将转到服务器并再获取50条记录 .
该调用采用JSON格式 . 对于第一个滚动,它作为请求发送所有100条记录,作为响应,我们得到50条新记录 . 现在,当我们滚动超过150条记录时,请求将所有150条记录作为请求,并且响应再次返回50条新记录 . 下一个滚动将发送累计200条记录的请求 .
现在我试图让循环控制器在循环中进行所有滚动 . 每个延迟加载调用将只提供50个记录,但是对于下一次请求迭代,累积记录数将作为请求发送 .
我的直觉说为此使用预处理器和后处理器 . 因为,我是Jmeter的新手,我不确定为此目的使用哪个预处理器,或者是否还有其他替代方案可以解决这个问题 .
如果是默认页面响应, fgAhi
并且我需要值 A
来传递第一个Json请求 . 所以第一个请求就像 xAy
,响应是 pBq
. 现在,对于第二次迭代,我需要请求为 xABy
,响应将为 pCq
. 第三个请求将是 xABCy
,响应是 pDq
,依此类推 .
这是一个例子:
默认页面响应正文:
quiz: [{"question": "Question1","answer": "Answer1"},
{"question": "Question2","answer": "Answer2"},
{"question": "Question3","answer": "Answer3"},
{"question": "Question4","answer": "Answer4"}]
循环控制器:JSON请求体的第一次迭代:
quiz: [{"question": "Question1","answer": "Answer1"},
{"question": "Question2","answer": "Answer2"},
{"question": "Question3","answer": "Answer3"},
{"question": "Question4","answer": "Answer4"},getNextTwoQA]`
第一次迭代响应:
quiz: [{question": "Question5","answer": "Answer5"},
{question": "Question6","answer": "Answer6"}]`
JSON请求体的第二次迭代:
quiz: [[{"question": "Question1","answer": "Answer1"},
{"question": "Question2","answer": "Answer2"},
{"question": "Question3","answer": "Answer3"},
{"question": "Question4","answer": "Answer4"},
{"question": "Question5","answer": "Answer5"},
{"question": "Question6","answer": "Answer6"},getNextTwoQA]
第二次迭代响应:
quiz: [{question": "Question7","answer": "Answer7"},
{question": "Question8","answer": "Answer8"}]
JSON请求体的第3次迭代:
quiz: [{"question": "Question1","answer": "Answer1"},
{"question": "Question2","answer": "Answer2"},
{"question": "Question3","answer": "Answer3"},
{"question": "Question4","answer": "Answer4"},
{"question": "Question5","answer": "Answer5"},
{"question": "Question6","answer": "Answer6"},
{question": "Question7","answer": "Answer7"},
{question": "Question8","answer": "Answer8"},getNextTwoQA]
第3次迭代响应:
quiz: [{question": "Question9","answer": "Answer9"},
{question": "Question10","answer": "Answer10"}]
等等
1 回答
IMO您只需要后处理器,它将您需要的数据保存为变量(累积),并且该变量用于采样器的主体 .
即当第一个请求返回
fgAhi
时,后处理器将A
保存为previousRows
变量(名称仅作为示例选择,可以更改为其他任何内容) . 然后在循环内部,Sampler使用${previousRows}
变量作为其主体的一部分 . 该采样器还具有后处理器,用于改变变量previousRows
以将新接收的结果B
添加到先前保存的A
. 并且由于循环返回到相同的采样器,它将在下一次迭代时自动获取${previousRows}
的新值,现在为AB
. 等等 .所以基本上流程是这样的:
可编程后处理器循环返回采样器后,采样器使用新值进行下一次迭代 . 可编程后处理器我指的是任何允许您编写代码的后处理器 . 例如BeanShell后处理器 . 将数据附加到
${previousRows}
的代码看起来像这样(骨架,需要添加特定的数据操作):你可以阅读BeanShell Post-Processor here