Groovy 从BeanShell/JSR223调用事务控制器或HTTP采样器

Groovy 从BeanShell/JSR223调用事务控制器或HTTP采样器,groovy,jmeter,beanshell,jsr223,jmeter-3.2,Groovy,Jmeter,Beanshell,Jsr223,Jmeter 3.2,问题陈述。 事务集(1000+),需要通过调用Beanshell或JSR233调用或重用(在不同的if/switch控制器中不重复) 在SoapUI中,我们有groovy脚本选项来中断顺序执行,并使用下面的命令将控制转移到任何请求 if( Math.random() > 0.5 ) testRunner.runTestStepByName( "Request 1") else testRunner.runTestStepByName( "Request 2") // do s

问题陈述。 事务集(1000+),需要通过调用Beanshell或JSR233调用或重用(在不同的if/switch控制器中不重复)

在SoapUI中,我们有groovy脚本选项来中断顺序执行,并使用下面的命令将控制转移到任何请求

if( Math.random() > 0.5 )
   testRunner.runTestStepByName( "Request 1")
else
   testRunner.runTestStepByName( "Request 2")

// do something else
....
Loadrunner(具有不同操作的运行时设置)和neoload中也提供相同的功能

在不使用if/while/switch controller的情况下,我们是否有任何内置对象或函数可以通过JSR223/BeanShell中的事务或采样器名称执行

例如:

在脚本10中,通过Jenkins或命令提示符在执行过程中设置JMeter属性,存在事务并在不同的场景中使用相同的脚本

__P(Flow,RoomBooking)
然后从JSR233/beanshell取样器

if(Flow=="RoomBooking"){

invoke Login 

invoke BookRoom

invoke Logout

} else if(Flow=="RoomBookingNBookItinerary")

invoke Login 

invoke BookRoom

invoke BookItinerary

invoke Logout

}else if(Flow=="RoomBookingNcancel")

invoke Login 

invoke BookRoom

Invoke ParkTicket 

invoke CancelRoom

invoke Logout

}Like different flows with different thread and throughput 
在这种情况下,我可以混合和匹配不同的流,并为不同的流重用相同的脚本。
这将有助于减少应用程序更改期间的脚本返工工作

你可以用

任何一步都将是一个挑战

在a中,您将设置所需的步骤:


如果您正在寻找从JSR223脚本再次执行上一个采样器的方法,它将类似于:

ctx.getPreviousSampler().sample(null)
其中
ctx
表示所有可用的方法和字段

演示:



然而,更好的方法是使用JMeter,它允许在其他地方执行JMeter测试计划的一部分,这样您就可以实现一种形式的

您是对的,JMeter根本没有JSR 223逻辑控制器

我认为这也有助于改变if控制器

我建议您打开一个到JMeter的产品(选择严重性:增强)

编辑


您可以打开一个新的。

我回答说,如果我对您的问题的理解不清楚,请在JMeter和SoapUI中显示一个示例测试计划,以及它在SoapUIModule Controller中的工作方式可以包括if语句,那么为什么不使用它呢?这没有帮助,这是我在没有if/switch/while控制器的情况下指定的,并且有超过1000个事务。我只想打破线性执行,在groovy或Beanshell的帮助下使用goto。在这种情况下,你能通过编辑你的问题用一个例子来说明吗?