2

问题陈述。 一组事务(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 中提供相同的功能。

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

例如:

在脚本中存在 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 

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

4

3 回答 3

1

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

ctx.getPreviousSampler().sample(null)

wherectx代表所有可用方法和字段的JMeterContext

演示:

JSR223 再执行一次采样器


然而,一个更好的主意是使用 JMeter 的模块控制器,它允许在其他地方执行 JMeter 测试计划的一部分,这样您就可以goto在 JMeter 中实现一种语句形式

于 2017-10-26T08:25:34.783 回答
1

你是对的,JMeter 根本没有 JSR 223 Logic Controller,

我认为它也可以帮助改变 if 控制器,

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

编辑

有一个新的错误 61711 - 添加您可以投票的 JSR223 逻辑控制器。

于 2017-11-02T07:08:11.250 回答
0

您可以使用Switch Controller来做到这一点

测试计划

任何步骤都将是一个事务控制器

JSR223 采样器中,您将设置所需的步骤:

JSR223 采样器

于 2017-10-25T17:54:05.703 回答