如何基于先前的请求响应数据运行请求

时间:2020-08-17 15:03:29

标签: jmeter

我有2个循环按顺序执行以下请求的测试计划。

  1. ApiHttp请求
  2. Mqtt请求

我需要运行第一个循环并确认API响应是对还是错:

如果为true,则运行Mqtt request,否则启动第二个循环并验证API响应,如果为true,则运行Mqtt否则停止。

在上述情况下,我放置了beanshell来读取API响应:

   vars.put("response", new String(data));

但是不知道如何验证其正确或错误并执行Mqtt。任何帮助。

2 个答案:

答案 0 :(得分:1)

  1. If Controller添加为线程组下的第一个测试元素,并使用__groovy() function作为条件:

    ${__groovy(vars.getIteration() <= 2,)}
    
  2. ApiHttp request放入If Controller的子项

  3. ApiHttp request之后添加另一个If Controller,并使用以下__groovy()函数作为条件:

    ${__groovy(ctx.getPreviousResult().getResponseDataAsString().contains('true'))}
    
  4. Mqtt request添加为If Controller的子项

  5. Mqtt request之后添加Flow Control Action采样器,并将其配置为:

    enter image description here

答案 1 :(得分:0)

首先从Beanshell切换到JSR223测试元素并使用Groovy。

使用dependency declaration并放入其中:

$ {response}

要基于迭代次数停止测试,请注意,循环控制器根据变量名称将迭代公开为变量,例如,如果LoopController命名为LC,则可以按以下方式访问迭代:

vars [“ __ jm__LC__idx”]。toInteger()

要使用JSR223断言停止Groovy的测试,您可以抛出:

抛出新的org.apache.jorphan.util.JMeterStopTestException();

请参阅: