我有2个循环按顺序执行以下请求的测试计划。
我需要运行第一个循环并确认API响应是对还是错:
如果为true,则运行Mqtt request,否则启动第二个循环并验证API响应,如果为true,则运行Mqtt否则停止。
在上述情况下,我放置了beanshell来读取API响应:
vars.put("response", new String(data));
但是不知道如何验证其正确或错误并执行Mqtt。任何帮助。
答案 0 :(得分:1)
将If Controller添加为线程组下的第一个测试元素,并使用__groovy() function作为条件:
${__groovy(vars.getIteration() <= 2,)}
将ApiHttp request
放入If Controller的子项
在ApiHttp request
之后添加另一个If Controller,并使用以下__groovy()函数作为条件:
${__groovy(ctx.getPreviousResult().getResponseDataAsString().contains('true'))}
将Mqtt request
添加为If Controller的子项
在Mqtt request
之后添加Flow Control Action采样器,并将其配置为:
答案 1 :(得分:0)
首先从Beanshell切换到JSR223测试元素并使用Groovy。
使用dependency declaration并放入其中:
$ {response}
要基于迭代次数停止测试,请注意,循环控制器根据变量名称将迭代公开为变量,例如,如果LoopController命名为LC,则可以按以下方式访问迭代:
vars [“ __ jm__LC__idx”]。toInteger()
要使用JSR223断言停止Groovy的测试,您可以抛出:
抛出新的org.apache.jorphan.util.JMeterStopTestException();
请参阅: