正在重试GET请求,直到JMeter中的http响应中存在某个值

ehxuflar  于 2022-11-09  发布在  其他
关注(0)|答案(1)|浏览(185)

我有一个如下的情况。我需要等待从响应体中获取请求的某个值。我需要循环这个请求,当所需的值出现在响应中时,退出循环,并调用需要在循环中执行的新请求,直到另一个值出现在响应中。
问题是我有"线程组"(在线程组中,我已将“循环计数”设置为3,但它将根据以前的测试进行动态设置,但为了解释我的情况,我们假设它有3个循环。)在该线程组中,我有一个CSV数据集配置,我使用了传递到GET请求中的ID(也是为了举例说明有3行且每行中有唯一的ID)。
因此,基本上,我希望对线程组进行3次迭代,每次迭代使用不同的ID(CSV行中的一个ID)来处理GET请求,但要多次重试GET请求(不允许无限次,因此假设为200次),直到响应包含特定值或取消测试。

理想情况如下:
GET请求with id ='123' =〉在响应中检查我需要的值是否存在,如果不存在

RETRYGET请求with id ='123' =〉检查响应中是否有我需要的值,如果没有
RETRYGET requestwith id ='123' =〉检查响应中是否有我需要的值,如果有:
start newGET requestwith id ='456' =〉在响应中检查我需要的值是否存在,如果不存在
RETRYGET请求with id ='456' =〉检查响应中是否有我需要的值,如果没有
RETRYGET请求with id ='456' =〉检查响应中是否有我需要的值,如果没有
第200次重试,没有我需要的值-退出测试

uplii1fm

uplii1fm1#

1.将HTTP请求采样器放在循环控制器下
1.在HTTP请求后添加If Controller,并使用以下__groovy()函数作为条件:

${__groovy(prev.getResponseDataAsString().contains('value-you-are-looking-for'),)}

value-you-are-looking-for替换为实际预期值

1.添加流控制操作采样器作为If控制器的子级,并将其设置为Break Current Loop

相关问题