jmeter逻辑控制器-模块控制器详解

一、基本概念

模块控制器用于引用并执行当前测试计划中已定义的测试片段。

所以,要使用模块控制器,还需要用到测试片段。

二、如何使用

第一步:创建测试片段

右键点击测试计划 → Add → Test Fragment → Test Fragment,命名为"用户登录",在片段下添加登录所需的HTTP请求。

第二步:添加模块控制器

在线程组中需要执行登录的位置,右键 → Add → Logic Controller → Module Controller。

第三步:选择要引用的片段

在模块控制器配置界面,从"Module to Run"下拉列表中选择"用户登录"。

点击找到目标元素,会跳到对应的测试片段。

第四步:验证执行

运行脚本,模块控制器所在位置会自动执行测试片段中的所有请求。

可以看到,线程组中并没有登录接口,但通过模块控制器调用了测试片段中的登录,也执行了登录接口,也保证了下一个接口引用到了cookie

再看禁用模块控制器后,登录接口就未被调用了,线程组里的接口也就不会获得cookie,就返回失败了

三、执行顺序

测试片段中的请求在模块控制器所在位置按顺序执行。

这个好理解,你把模块控制器放在第一,他就先执行,放在第二,他就第二个执行。

复制代码
线程组
├── 请求A
├── 模块控制器(引用"登录"片段)
└── 请求B

实际执行序列:请求A → 登录片段内所有请求 → 请求B

四、作用域与变量

作用域继承:测试片段被引用后,继承模块控制器所在位置的配置,包括HTTP请求默认值、Cookie管理器、头管理器等。

变量作用域 :测试片段中定义的变量默认是局部变量,仅在片段内部有效。若需在片段执行后继续使用这些变量(如登录获取的token),需在后置处理器中使用vars.put()将变量设为全局可见。

五、注意事项

  • 模块控制器只能引用当前测试计划中的测试片段
  • 测试片段不能通过模块控制器引用自身,会造成循环引用
  • 测试片段无法独立运行,必须通过模块控制器触发