Groovy 从BeanShell/JSR223调用事务控制器或HTTP采样器
问题陈述。 事务集(1000+),需要通过调用Beanshell或JSR233调用或重用(在不同的if/switch控制器中不重复) 在SoapUI中,我们有groovy脚本选项来中断顺序执行,并使用下面的命令将控制转移到任何请求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
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。在这种情况下,你能通过编辑你的问题用一个例子来说明吗?